awk 語法與內建變數(二)

cn-five發表於2020-09-07

OFS 與 ORS

OFS(output field separator) ,輸出欄位分隔符,預設為空格。 ORS (output raw separator) ,輸出行分隔符,預設為回車。

cat OFS_ORS.text 
ab|cde*fg|hij*kl|mno

指定輸入欄位分隔符 FS 為 | ,指定輸入行分隔符 RS 為 * ,如下

awk 'BEGIN{FS="|";RS="*"}{print $1, $2}' OFS_ORS.text
ab cde
fg hij
kl mno

指定輸出行分隔符為 @ ,如下

awk 'BEGIN{FS="|";RS="*";ORS="@"}{print $1, $2}' OFS_ORS.text 
ab cde@fg hij@kl mno

可見欄位之間分隔符依然為空格,現將其指定為 # ,示例如下

awk 'BEGIN{FS="|";RS="*";ORS="@";OFS="#"}{print $1, $2}' OFS_ORS.text 
ab#cde@fg#hij@kl#mno

注意,輸出欄位之間須有逗號,如果不加則不會正常顯示

awk 'BEGIN{FS="|";RS="*";ORS="@";OFS="#"}{print $1 $2}' OFS_ORS.text
abcde@fghij@klmno

FILENAME

表示當前處理的檔名,如果檔案有多行且沒有匹配規則限制,則每一行都將輸出檔名,如下

awk '{print FILENAME}' trump.txt 
trump.txt
trump.txt
trump.txt

ARGC 與 ARGV

ARGC 表示引數個數, ARGV 則表示包含引數的陣列,示例如下

awk '{print ARGC}' trump.txt OFS_ORS.text 

由於 trump.txt 有三行資料,OFS_ORS.txt 有一行資料,算上 awk 本身一共三個引數,分別是 awk 、 trump.txt 、 OFS_ORS.txt 。

3
3
3
3

ARGV 包含具體引數,如下

awk '{print ARGV[0],ARGV[1],ARGV[2]}' trump.txt OFS_ORS.text 
awk trump.txt OFS_ORS.text 
awk trump.txt OFS_ORS.text 
awk trump.txt OFS_ORS.text 
awk trump.txt OFS_ORS.text 
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章