linux 中 awk命令中 getline的用法

发布时间 2023-07-20 10:53:54作者: 小鲨鱼2018

 

001、

[root@PC1 test02]# ls
[root@PC1 test02]# seq 10
1
2
3
4
5
6
7
8
9
10
[root@PC1 test02]# seq 10 | awk '{getline; print $0}'  ## getline把两行当作一行处理,而且跳过了第一行
2
4
6
8
10

 

002、

[root@PC1 test02]# ls
[root@PC1 test02]# seq 10
1
2
3
4
5
6
7
8
9
10
[root@PC1 test02]# seq 10 | awk '{print $0; getline}'    ## getline 进入下一行,同时改变环境变量
1
3
5
7
9

 

003、

[root@PC1 test02]# seq 6 | awk '{getline; print; print $0}'
2
2
4
4
6
6
[root@PC1 test02]# seq 6 | awk '{getline tmp; print tmp; print $0}'   ## 增加getline后面的参数
2
1
4
3
6
5

 

004、getline命令从另外一个文件中读取内容

[root@PC1 test02]# ls
a.txt  b.txt
[root@PC1 test02]# cat a.txt         ## 测试数据1
1
2
3
4
5
6
[root@PC1 test02]# cat b.txt      ## 测试数据2
11
12
13
14
15
16
[root@PC1 test02]# awk '{printf "%s ", $0; getline < "b.txt"; print $0}' a.txt   ## 内部读取b.txt
1 11
2 12
3 13
4 14
5 15
6 16