linux中擷取欄位與 區別

2022-06-17 18:36:09 字數 3056 閱讀 5808

實現方法有如下幾種:

expr substr 「$a」 1 8

echo $a|awk 『』

echo $a|cut -c1-8

echo $

expr $a : 『\(.\\).*』

echo $a|dd bs=1 count=8 2>/dev/null

(1)第一種方法:

從左向右擷取最後乙個string後的字串

$從左向右擷取第乙個string後的字串

$從右向左擷取最後乙個string後的字串

$從右向左擷取第乙個string後的字串

$「*」只是乙個萬用字元可以不要

請看下面的例子:

(2)第二種方法:

$:擷取變數varible從n1開始的n2個字元,組成乙個子字串。可以根據特定字元偏移和長度,使用另一種形式的變數擴充套件,來選擇特定子字串。試著在 bash 中輸入以下行:

$ exclaim=cowabunga

$ echo $

cow$ echo $

abunga

這種形式的字串截斷非常簡便,只需用冒號分開來指定起始字元和子字串長度。

比如獲取字尾名

ls -al | cut -d 「.」 -f2
小結:shell對應字串的處理方法很多,根據需求靈活選擇。

在做shell批處理程式時候,經常會涉及到字串相關操作。有很多命令語句,如:awk,sed都可以做字串各種操作。 其實shell內建一系列操作符號,可以達到類似效果,大家知道,使用內部操作符會省略啟動外部程式等時間,因此速度會非常的快。

一 語法12

34cut[選項] 檔名

選項:

-f 列號:提取第幾列

-d 分隔符:按照指定分隔符分割列

[[    $name =~  xx ]];then

xx【#】代表 root許可權

【$】代表普通使用者

$@:表示所有指令碼引數的內容

$#:表示返回所有指令碼引數的個數。

$# 是傳給指令碼的引數個數

$0是指令碼本身的名字

$1是傳遞給該shell指令碼的第乙個引數

$2是傳遞給該shell指令碼的第二個引數

$@ 是傳給指令碼的所有引數的列表

$* 是以乙個單字串顯示所有向指令碼傳遞的引數,與位置變數不同,引數可超過9

$$ 是指令碼執行的當前程序id號

$? 是顯示最後命令的退出狀態,0表示沒有錯誤,其他表示有錯誤

示例:編寫如下shell指令碼,儲存為test.sh

#!/bin/sh

echo "number:$#"

echo "argume:$@"

執行指令碼:

./test.sh first_arg second_arg

一、判斷讀取字串值

表示式 含義

$變數var的值, 與$var相同

$如果var沒有被宣告, 那麼就以$default作為其值 *

$如果var沒有被宣告, 或者其值為空, 那麼就以$default作為其值 *

$如果var沒有被宣告, 那麼就以$default作為其值 *

$如果var沒有被宣告, 或者其值為空, 那麼就以$default作為其值 *

$如果var宣告了, 那麼其值就是$other, 否則就為null字串

$如果var被設定了, 那麼其值就是$other, 否則就為null字串

$如果var沒被宣告, 那麼就列印$err_msg *

$如果var沒被設定, 那麼就列印$err_msg *

$匹配之前所有以varprefix開頭進行宣告的變數

$匹配之前所有以varprefix開頭進行宣告的變數

加入了「*」  不是意思是: 當然, 如果變數var已經被設定的話, 那麼其值就是$var.

二、字串操作(長度,讀取,替換)

表示式 含義

$$string的長度

$在$string中, 從位置$position開始提取子串

$在$string中, 從位置$position開始提取長度為$length的子串

$從變數$string的開頭, 刪除最短匹配$substring的子串

$從變數$string的開頭, 刪除最長匹配$substring的子串

$從變數$string的結尾, 刪除最短匹配$substring的子串

$從變數$string的結尾, 刪除最長匹配$substring的子串

$使用$replacement, 來代替第乙個匹配的$substring

$使用$replacement, 代替所有匹配的$substring

$如果$string的字首匹配$substring, 那麼就用$replacement來代替匹配到的$substring

$如果$string的字尾匹配$substring, 那麼就用$replacement來代替匹配到的$substring

說明:"*$substring」可以是乙個正規表示式.

【#】代表 root許可權

【$】代表普通使用者

awk擷取字段

file 期望每行刪除第二個 之前的內容,得到 isbctruncate 1 socialtime 1 nettype mobile isbctruncate 1 socialtime 1 nettype pc 我的處理方法是 awk f file 從第三個字元開始處理,並且以 為分隔符,因為最後乙...

oracle中substr函式(擷取字段)

所使用函式 substr string,start,length string 索要擷取的字串 start 從第幾個字元開始,0 1都是從頭開始 length 要擷取字元的長度,不寫預設擷取 到結束的字元 以上例項第一列是原欄位,第二列是從0開始,擷取長度2,第三列是1開始,擷取長度2,可以看出所擷...

sql中擷取字段資料的函式

今天遇到乙個做模糊查詢的問題,做模糊查詢時,要將做模糊查詢的資料第乙個數字給擷取掉。之前想在service中用for 迴圈 用startswith 做篩選,方案沒有通過,然後上網上搜取sql相關函式,找到了乙個方法 1 left s,n 函式返回字串s開始的最左邊n個字元。eg select lef...