激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Linux|Centos|Ubuntu|系統進程|Fedora|注冊表|Bios|Solaris|Windows7|Windows10|Windows11|windows server|

服務器之家 - 服務器系統 - Linux - LINUX中詳解AWK內建變量FS,NF,NR,RT,RS,ORS,OFS

LINUX中詳解AWK內建變量FS,NF,NR,RT,RS,ORS,OFS

2022-02-21 17:47cengineering Linux

很多朋友沒搞告白AWK內建變量FS,NF,NR,RT,RS,ORS,OFS的方法和原理,小編給大家總結了詳細的內容,一起來學習下思路。

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

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

?
1
2
3
4
[~/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)

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

RS指定行分隔符 默認分隔符為\n(Row Space)

?
1
2
3
4
[~/AWK_learning]$ echo "111 222|333 444|555 666" | awk 'BEGIN{RS="|"}{print $0}'
111 222
333 444
555 666

ORS指定輸出行分隔符

?
1
2
[~/AWK_learning]$ awk 'BEGIN{ORS="|";}{print $0;}' test.txt
111 222|333 444|555 666

RT 代指分隔符

?
1
2
3
4
[~/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)

?
1
2
3
4
5
6
7
8
9
10
11
12
[~/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)

?
1
2
3
4
5
6
7
8
9
10
11
12
[~/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,記錄了兩個班級的成績信息,內容分別如下所示:

?
1
2
3
4
5
6
7
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指令;

?
1
2
3
4
5
6
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來實現,如下:

?
1
2
3
4
5
6
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

原文鏈接:http://blog.csdn.net/cengineering/article/details/78529292

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲一区在线免费视频 | 免费毛片电影 | 99在线精品视频免费观看20 | 成人免费淫片 | 国产成人综合在线观看 | 艹逼视频网| 亚洲第一色片 | 亚洲视频综合网 | 成人男女啪啪免费观看网站四虎 | 久久最新免费视频 | 视频一区二区视频 | 亚洲白嫩在线观看 | 中文字幕 亚洲一区 | 午夜影视一区二区 | 久在线草 | 欧美交在线 | 欧美成人一区二区三区电影 | 羞羞网站在线看 | 手机在线看片国产 | 久久成人激情视频 | 国产一极毛片 | 精品在线观看一区二区 | 久久久入口 | www.91操| 国产日韩在线 | 午夜视频在线免费播放 | 精品成人久久久 | 91久久精品一 | 久久里面有精品 | 末成年女av片一区二区 | 女人解衣喂奶电影 | 欧美1| 国产成年人视频网站 | 午夜激情视频网站 | 午夜九九九 | av免费在线观看国产 | 黄色免费在线电影 | 亚洲国产高清视频 | 中文字幕一区二区三区久久 | 久久影院国产精品 | 4p一女两男做爰在线观看 |