shell 005 小斌文件 awk

2021-10-23 10:37:39 字數 1512 閱讀 5153

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還支援常見的關係運算,比如 題外話 如果要想計...