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如何处理文件中上下关联的两行。的主要内容,如果未能解决你的问题,请参考以下文章