我正在尝试打印包括第一场比赛在内的所有线路,直到第二场比赛第一次出现,第二场比赛发生在第一场比赛的上方和下方。
我所拥有的文件包含由下面的空行分隔的记录,
host host1
key1 value
key2 value
key3 value
host host2
key1 value
key2 value
key3 value
key4 value
key5 value
host host3
key1 value
key2 **aaaa**
key3 value
host host3
key1 value
key2 value
让我说我的搜索模式是“aaaa”。我想将第一场比赛上方的线条打印到“aaaa”直到空行,并且第一场比赛下面的线条与“aaaa”匹配,直到空行。所以搜索应输出:
host host3
key1 value
key2 aaaa
key3 value
我不能使用grep,因为每条记录都包含不同数量的行。
答案 0 :(得分:0)
我想我找到了答案。对于寻找类似解决方案的任何人,您可以使用以下awk:
awk 'BEGIN{ RS="\n\n"; FS="\n"; } /aaaa/ {print}' << inputfile
答案 1 :(得分:0)
$ awk -v RS= '/aaaa/' file
host host3
key1 value
key2 **aaaa**
key3 value