awk是一種程式語言,用於在linux下對文字和資料進行處理。
資料可以來自標準輸入、乙個或多個檔案,或其他命令的輸出。
options
-f 對於每次處理的內容,可以使用乙個自定義的分隔符,預設的分隔符是空白字元 (空格或tab鍵)
command
awk
'begin{} {} end{}'
#處理所有內容之前的動作 處理內容中的動作 處理所有內容之後的動作
begin 通常用來定義一些變數,例如 begin
例項
awk -f: '' /etc/passwd
任何 awk 語句都由 模式 和 動作 組成。
模式部分 決定動作語句何時觸發及觸發事件。
如果省略模式部分,動作將時刻保持執行狀態。
模式可以是任何條件語句或復合語句或正規表示式。
1.正規表示式
awk'$0 ~ /^root/' /etc/passwd #匹配以root開頭的,整行匹配
awk'$0 !~ /^root' /etc/passwd #不匹配以root開頭的,整行匹配
awk -f: '$1 ~ /^root/' /etc/passwd #匹配以root開頭的,只針對第乙個字段
awk -f: '$nf !~ /bash$/' /etc/passwd #不匹配以bash結尾的,只針對最後乙個字段
範圍匹配 模式之間用 , 隔開
awk -f: '/^bin/,/adm/'
#從開頭是 `bi`的行開始匹配一直到含有adm的行結束匹配
2.條件表示式
#字串需要使用雙引號
awk -f: '$nf == "/bin/bash" ' /etc/passwd #匹配最後乙個字段等於/bin/bash的
awk -f: 'if($1 == "root") ' /etc/passwd #如果第乙個字段等於root,輸出整行
#符號# < 小於
# > 大於
# <= 小於等於
# >= 大於等於
# == 等於
# != 不等於
# % 取餘
# ^ 冪
# && 與
# || 或
# ! 非
echo
"a:b: e "
|awk -f'[ :]'
'print $4'
#會輸出e, 以空格和冒號作為分隔符
[root@sharkyun ~]
# w=hello
echo
"hello world"
|awk -v var=
$w'$1 == var '
輸出:hello
shell 004 小斌文件 陣列 函式
一 定義乙個陣列 預設索引號為整數 var lwb1 lwb2 lwb3 定義乙個陣列 line cat etc passwd 把檔案中的每一行作為陣列中的乙個值 echo 顯示陣列中索引號為2的值,索引號預設從 0 開始 echo 顯示陣列中所有的值二 定義關聯陣列 可以自己定義索引號 1.宣告 ...
shell小知識小技巧
1 local config config 1,如果沒有第乙個引數,那麼config netowk 2 字串可以用 來比較 數字可以用 來比較 3 shell函式傳引數的時候,local var1 hello local var2 word 傳這兩個引數到shell函式 fun shell寫成 fu...
幾個shell小技巧
1.expr 命令 由於bash 是功能有限的直譯器,所以自身並沒有支援太多的算術運算,一切都是字串。所以如果涉及到算術運算,需要借助其他的工具,比如bc 功能比較強大的小工具 expr 和 算術擴充套件.expr 支援幾個常見的算術運算 取模 expr還支援常見的關係運算,比如 題外話 如果要想計...