AWK神器,繼續案例

2021-09-04 01:50:56 字數 1377 閱讀 4287

例子一:列印檔案n到n+m行

-f :允許awk更改其欄位分隔符

-v :var=val把val值賦值給var如果有多個變數要賦值,那麼就寫多個-v,每個變數賦值對應乙個-v

cat txt

1.021 33

a 44

2.53 6

b 749 1

c 95.0 8

#列印檔案n到n+m行

awk -v n=2 -v m=3 'nr==n,nr==n+m' txt

例子二:內建變數

argc:命令列引數的個數

argv:命令列引數陣列

argind: 當前被處理檔案的argv標誌符

cat a

i am file a

cat b

i am file b

awk ' if(argind==2)}' a b

nr:已經讀出的記錄數

fnr當前檔案的記錄數

#輸入檔案a和b,由於先掃瞄a,所以掃瞄a的時候必然有nr==fnr,然後掃瞄b的時候,fnr從1開始計數,而nr則接著a的行數繼續計數,所以nr > fnr

awk 'nr==fnr nr>fnr' a b

fs:輸入字段分隔符(預設為:space:),相當於-f選項

awk -f ':' ''a 和 awk 'begin' a是一樣的

ofs:輸出字段分隔符(預設為:space:)

cat b

1:2:3

4:5:6

awk -f ':' 'begin' b

#那麼把ofs設定成";"後就會輸出

1;2;3

4;5;6

(小注釋:awk把分割後的第1、2、3個字段用$1,$2,$3...表示,$0表示整個記錄(一般就是一整行))

nf:當前記錄中的字段個數

cat c

1:2:3

1:2awk -f ':' '' c32

#可用於字段數過濾

awk -f ':' '' c

1:2:3

rs:輸入記錄分隔符,預設為"\n"

預設情況下,awk把一行看作乙個記錄;如果設定了rs,那麼awk按照rs來分割記錄

cat d

awk 'begin' d

hello world

i am a boy

ors:輸出記錄分隔符,預設為換行符,控制每個print語句後的輸出符號

catc

1:2:3

1:2awk 'begin' c

1;1;

AWK神器,繼續案例

例子一 列印檔案n到n m行 f 允許awk更改其欄位分隔符 v var val把val值賦值給var如果有多個變數要賦值,那麼就寫多個 v,每個變數賦值對應乙個 v cat txt 1.021 33 a 44 2.53 6 b 749 1 c 95.0 8 列印檔案n到n m行 awk v n 2...

AWK神器,陣列案例

例子1 簡單統計字母出現次數 cat daa bcde dfde ghawk end d sort a 2 b 1 c 1 d 3 e 2 f 1 g 1 h 1例子二 awk讀取shell中的變數 b 1 cat f awk v var b f 除了使用 v選項外,還可以使用 variable 的...

awk 使用案例

awk 語言的最基本功能是在檔案或字串中基於指定規則瀏覽和抽取資訊,awk 抽取資訊後,才能進行其他文字操作,完整的 awk 指令碼通常用來格式化文字檔案中的資訊 語法格式 awk 選項 指令 操作檔案 常用選項 f 指定分隔符,分隔符用 引起來 不加任何引數預設為空格分隔 定位行號 使用nr ro...