shell脚本,awk如何处理文件中上下关联的两行。

Posted 王月波

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell脚本,awk如何处理文件中上下关联的两行。相关的知识,希望对你有一定的参考价值。

文件d.txt如下内容

ggg 1
portals: 192.168.5.41:3260
werew 2
portals: 192.168.5.43:3260

如何把文件d.txt内容变为如下内容

ggg 192.168.5.41:3260
werew 192.168.5.43:3260

解题思路:

[root@localhost study]# awk \'/port/{print a" "$2}{a=$1}\' d.txt
ggg 192.168.5.41:3260
werew 192.168.5.43:3260

 \'/port/{print a" "$2}{a=$1}\' 

处理第一行的时候,以port开头吗?很明显,不以port开头,所以那个pattern不匹配,action不执行。但执行了后面的a=$1

处理第二行的时候,以port开头,打印出来a和本行$2,再处理就是个循环过程。

详细步骤:

由于第一行没有匹配以port开头的,所以print a" "$2不执行,执行a=$1. a=ggg

由于第二行有匹配以port开头的,所以print a" "$2行执行,由于a=ggg,所以输出 ggg 192.168.5.41:3260

由于第三行没有匹配以port开头的,所以print a" "$2不执行,执行a=$1. a=werew

由于第四行有匹配以port开头的,所以print a" "$2行执行,由于a=werew,所以输出 werew 192.168.5.43:3260

由此得到结果:

ggg 192.168.5.41:3260
werew 192.168.5.43:3260

以上是关于shell脚本,awk如何处理文件中上下关联的两行。的主要内容,如果未能解决你的问题,请参考以下文章

Shell合并两个文件成一个文件的两列

shell脚本之awk工具的使用

如何在linux Shell脚本里面把一个数组传递到awk内部进行处理

sed && awk工具 及一些常用的shell脚本

如何使用shell脚本快速排序和去重文件数据

Shell脚本之awk详解