日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux NR==变量,LINUX中详解AWK内建变量FS,NF,NR,RT,RS,ORS,OFS

發布時間:2024/9/30 linux 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux NR==变量,LINUX中详解AWK内建变量FS,NF,NR,RT,RS,ORS,OFS 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

看了網上好多關于AWK內建變量的文章,這里加上個人的理解和記憶,可以讓大家掌握這些變量的基本用法。

FS 指定字段un列分隔符(Font Space)

[~/AWK_learning]$ echo "111|222|333" | awk "{print $1}"

111|222|333

[~/AWK_learning]$ echo "111|222|333" | awk "BEGIN{FS="|"}{print $1}"

111

OFS 指定輸出字段列分隔符(Output Font space)

[~/AWK_learning]$ echo "111 222 333" |awk "BEGIN{OFS="|";}{print $1,$2,$3}"

111|222|333

RS指定行分隔符 默認分隔符為

(Row Space)

[~/AWK_learning]$ echo "111 222|333 444|555 666" | awk "BEGIN{RS="|"}{print $0}"

111 222

333 444

555 666

ORS指定輸出行分隔符

[~/AWK_learning]$ awk "BEGIN{ORS="|";}{print $0;}" test.txt

111 222|333 444|555 666

RT 代指分隔符

[~/AWK_learning]$ echo "111 222|333 444|555 666" | awk "BEGIN{RS="|"}{print $0,RT}"

111 222 |

333 444 |

555 666 |

NF 每行字段總數(Number of Font)

[~/AWK_learning]$ cat test.txt

111 222

333 444

555 666

[~/AWK_learning]$ awk "{print NF}" test.txt

2

2

2

[~/AWK_learning]$ awk "{print $NF}" test.txt

222

444

666

NR 當前行數(Number of Row)

[~/AWK_learning]$ cat test.txt

111 222

333 444

555 666 777

[~/AWK_learning]$ awk "{print NR}" test.txt

1

2

3

[~/AWK_learning]$ awk "{print $NR}" test.txt

111

444

777

下面我們在來看下,在內建變量執行中的相關問題:

NR表示從awk開始執行后,按照記錄分隔符讀取的數據次數,默認的記錄分隔符為換行符,因此默認的就是讀取的數據行數,NR可以理解為Number of Record的縮寫。

在awk處理多個輸入文件的時候,在處理完第一個文件后,NR并不會從1開始,而是繼續累加,因此就出現了FNR,每當處理一個新文件的時候,FNR就從1開始計數,FNR可以理解為File Number of Record。

NF表示目前的記錄被分割的字段的數目,NF可以理解為Number of Field。

下面以示例程序來進行說明,首先準備兩個輸入文件class1和class2,記錄了兩個班級的成績信息,內容分別如下所示:

CodingAnts@ubuntu:~/awk$ cat class1

zhaoyun 85 87

guanyu 87 88

liubei 90 86

CodingAnts@ubuntu:~/awk$ cat class2

caocao 92 87 90

guojia 99 96 92

現在要查看兩個班級的所有成績信息,并在每條信息前加上行號,則可以使用下面的awk指令;

CodingAnts@ubuntu:~/awk$ awk "{print NR,$0}" class1 class2

1 zhaoyun 85 87

2 guanyu 87 88

3 liubei 90 86

4 caocao 92 87 90

5 guojia 99 96 92

這里的行號就是通過NR來實現的,awk每讀取一條記錄,NR的值便加一。如果要求每個班級的行號從頭開始變化,則需要使用FNR來實現,如下:

CodingAnts@ubuntu:~/awk$ awk "{print FNR,$0}" class1 class2

1 zhaoyun 85 87

2 guanyu 87 88

3 liubei 90 86

1 caocao 92 87 90

2 guojia 99 96 92

總結

以上是生活随笔為你收集整理的linux NR==变量,LINUX中详解AWK内建变量FS,NF,NR,RT,RS,ORS,OFS的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。