awk用法小結

2021-06-01 01:39:22 字數 3026 閱讀 3812

變數名                含義

argc                命令列變元個數

argv                命令列變元陣列

filename        當前輸入檔名

fnr                當前檔案中的記錄號

fs                輸入域分隔符,預設為乙個空格

rs                輸入記錄分隔符

nf                當前記錄裡域個數

nr                到目前為止記錄數

ofs                輸出域分隔符

ors                輸出記錄分隔符

1、awk '/101/'               file 顯示檔案file中包含101的匹配行。

awk '/101/,/105/'         file

awk '$1 == 5'             file

awk '$1 == "ct"'          file 注意必須帶雙引號

awk '$1 * $2 >100 '       file 

awk '$2 >5 && $2<=15'     file

2、awk '' file 顯示檔案file的當前記錄號、域數和每一行的第乙個和最後乙個域。

awk '/101/ ' file 顯示檔案file的匹配行的第

一、二個域加10。

awk '/101/ '  file

awk '/101/ ' file 顯示檔案file的匹配行的第

一、二個域,但顯示時域中間沒有分隔符。

3、df | awk '$4>1000000 '         通過管道符獲得輸入,如:顯示第4個域滿足條件的行。

4、awk -f "|" ''   file 按照新的分隔符「|」進行操作。

awk  'begin

'              file 通過設定輸入分隔符(fs="[: \t|]")修改輸入分隔符。

sep="|"

awk -f $sep ''  file 按照環境變數sep的值做為分隔符。   

awk -f '[ :\t|]' '' file 按照正規表示式的值做為分隔符,這裡代表空格、:、tab、|同時做為分隔符。

awk -f ''    '' file 按照正規表示式的值做為分隔符,這裡代表[、]

5、awk -f awkfile              file 通過檔案awkfile的內容依次進行控制。

cat awkfile

/101/ --遇到匹配行以後列印 ' hello! '.\047代表單引號。

--因為沒有模式控制,列印每一行的前兩個域。

6、awk '$1 ~ /101/ ' file 顯示檔案中第乙個域匹配101的行(記錄)。

7、awk   'begin

'           file 通過設定輸出分隔符(ofs="%")修改輸出格式。

8、awk   'begin              begin 表示在處理任意行之前進行的操作。

' file 取得檔案第乙個域的最大值。

(表示式1?表示式2:表示式3 相當於:

if (表示式1)

表示式2

else

表示式3

awk '' file 

9、awk '$1 * $2 >100 ' file 顯示檔案中第乙個域匹配101的行(記錄)。

10、awk '' file 找到匹配行後先將第3個域替換後再顯示該行(記錄)。

awk ''  file 將第7域被3除,並將餘數賦給第7域再列印。

11、awk '/tom/ ' file 找到匹配行後為變數wage賦值並列印該變數。

12、awk '/tom/  

end ' file end表示在所有輸入行處理完後進行處理。

13、awk 'gsub(/\$/,"");gsub(/,/,""); cost+=$4;

end '    file gsub函式用空串替換$和,再將結果輸出到filename中。

1 2 3 $1,200.00

1 2 3 $2,300.00

1 2 3 $4,000.00

awk '

end "' file

通過if和else if完成條件語句

awk '

end "' file

通過exit在某條件時退出,但是仍執行end操作。

awk '

end "' file

通過next在某條件時跳過該行,對下一行執行操作。

14、awk '' file1 file2 file3>fileall 把file1、file2、file3的檔案內容全部寫到fileall中,格式為

列印檔案並前置檔名。

15、awk ' $1!=previous    

' fileall 把合併後的檔案重新分拆為3個檔案。並與原檔案一致。

16、awk 'begin '         通過管道把date的執行結果送給getline,並賦給變數d,然後列印。 

17、awk 'begin '

通過getline命令互動輸入name,並顯示出來。

awk 'begin }'

列印/etc/passwd檔案中使用者名稱包含050x_的使用者名稱。

18、awk '}}

}'19、在awk中呼叫系統變數必須用單引號,如果是雙引號,則表示字串

flag=abcd

awk ''   結果為abcd

awk ''   結果為$flag

呼叫系統變數必須用單引號這句話不對。在awk的命令列方式中,引號為awk提供命令串,單雙引號均可,單引號引起的串shell不做處理,直接提供給awk,雙引號引起的串先經過shell替換後才交給awk處理:

awk ''   相當於把 ''交由awk處理,awk ""一樣,shell已處理$flag。

awk ''y相當於命令:awk "",單引號內的串shell不處理。

awk用法小結

awk 用法 awk pattern 變數名 含義 argc 命令列變元個數 argv 命令列變元陣列 filename 當前輸入檔名 fnr 當前檔案中的記錄號 fs 輸入域分隔符,預設為乙個空格 rs 輸入記錄分隔符 nf 當前記錄裡域個數 nr 到目前為止記錄數 ofs 輸出域分隔符 ors ...

awk 用法小結

awk 用法 awk pattern 變數名 含義 argc 命令列變元個數 argv 命令列變元陣列 filename 當前輸入檔名 fnr 當前檔案中的記錄號 fs 輸入域分隔符,預設為乙個空格 rs 輸入記錄分隔符 nf 當前記錄裡域個數 nr 到目前為止記錄數 ofs 輸出域分隔符 ors ...

awk用法小結

awk 用法 awk pattern 變數名 含義 argc 命令列變元個數 argv 命令列變元陣列 filename 當前輸入檔名 fnr 當前檔案中的記錄號 fs 輸入域分隔符,預設為乙個空格 rs 輸入記錄分隔符 nf 當前記錄裡域個數 nr 到目前為止記錄數 ofs 輸出域分隔符 ors ...