1. 程式人生 > >二.AWK內置變量

二.AWK內置變量

繼續 bsp 情況 標識 包含 使用 內置變量 擔心 awk內置變量

1. FS 輸入字段分隔符

awk默認的字段分隔符是空格,如果你的輸入文件中不是以空格作為字段分隔符, 那麽你可以使用-F參數來指定分隔符。例如

awk -F, ‘/pattern/ {action}‘ input-file

你也可以設置內置變量FS來完成,FS內置變量只能在BEGIN區域使用。

awk ‘BEGIN {FS=","} {print $2, $3}‘ input-file

當你遇到包含多種字段分隔符時,不用擔心,FS完全能搞定,比如:

awk ‘BEGIN {FS="[,:;]"} /pattern/ {action}‘

上面這條命令指定了字段分隔符時逗號,冒號,分號。

2. OFS 輸出字段分隔符

FS是輸入字段分隔符,OFS是輸出字段分隔符。OFS會被打印在輸出行的連續兩個字段之間。默認情況下,awk會以空格作為輸出字段分隔符

例如:

awk -F, ‘BEGIN {OFS=":"} /pattern/ {action}‘ input-file

上面這行代碼指定了輸出字段分隔符為冒號。

請註意print語句中使用逗號和不使用分號的區別:

使用逗號,則awk在字段之間使用OFS作為輸出字段分隔符;

如果不使用分號,則不會使用OFS作為輸出字段分隔符;

3.RS 記錄分隔符

awk默認的記錄分隔符是換行符,我們也可以指定記錄分隔符,例如:

awk -F, ‘BEGIN {RS=";"} /pattern/ {action}‘ input-file

上面這行代碼中,設置分號作為記錄分隔符,那awk就會把分號作為每行直接的分隔符。

4.ORS輸出記錄分隔符

RS是出入記錄分隔符,ORS是輸出記錄分隔符。awk默認使用換行符作為輸出記錄分隔符。

5.NR 記錄序號

NR變量非常有用,在循環內部標識記錄序號。在END區域時,代表輸入文件的總記錄數

6.FILENAME當前記錄的文件名

當使用awk處理多個輸入文件時,FILENAME就顯得非常有用,它代表awk當前正在處理的文件。

7.FNR 當前文件的NR

NR代表當前awk處理的記錄的行號, 在給awk傳遞兩個文件時,NR會在多個文件中持續增加,當處理到第二個文件時,NR不會被重置為1, 而是在前一個文件的NR基礎上繼續增加。

FNR則只代表當前文件正在處理的記錄的行號,不會在第二個文件中繼續增加, 當處理到第二個文件時,會重置為1

二.AWK內置變量