2.awk預定義變數
預定義變數
就是awk事先定義的變數,不需要自定義就能直接驚醒使用的變數。
這裡介紹 FS OFS RS ORS NR FNR NF FILENAME的簡單用法。
$n 前面已經講過 表示第n個欄位 $0 表示整條記錄
FS filed separater 欄位分隔符
預設的欄位分隔符是空格
awk 'BEGIN{FS = "a"}{print $2}' a.txt
設定欄位分隔符為 a
或者使用 -F
awk -F "a|c" '{print $2}' a.txt
設定a或c為欄位分割符
OFS 上面的FS是輸入的欄位分割符 OFS表示output 欄位分隔符
awk 'BEGIN{OFS = "|"}{print $1,$2}' a.txt
第一個欄位和第二個欄位之前輸出時用 | 分割。
RS record separater 記錄分隔符
預設的記錄分隔符是\n
用法和之前的欄位分隔符FS 相同
ORS 輸出記錄分隔符
NR number of record 行號
awk '{print NR, $0}' b.txt
列印行號以及全部欄位
FNR file number of record 檔案行號
在處理多個檔案的時候,使用FNR可以按檔案輸出行號
NF number of filed 欄位數目
awk —F ":" '{print NF}' a.txt
輸出檔案中每行欄位的數目
FILENAME 被awk 處理的檔名稱
awk '{print FILENAME}' a.txt
輸出的結果應該是檔案行數個檔名
操作例項
檔案內容:
name:tom
tel:13575767654
gender:male
name:john
tel:18975767654
gender:male
name:kitty
tel:15075789654
gender:female
要求:輸出姓名和性別
操作: awk 'BEGIN{RS = "\n\n"}{print $1,$3}' e.txt
\n\n 表示空行,以空行表示記錄分隔符,輸出第一個和第三個欄位。