整个文本文件如下:
aa
...
bb
...
bb
...
aa
...
bb
...
在aa
行后,会有一行或多行bb
。
我尝试了下面的命令,该命令会对所有行aa
和aa
上方的行进行细化。
grep -A 1 aa fileName
如何打印所有行aa
以及aa
上方的行[{1}}以及行bb
后面的第aa
行以及此bb
上方的行线?
已修改:需要为bb
的每次出现找到第一行(且仅第一行)aa
行,同时打印出行号。也许我会重新定义问题:对于每一行aa
,在bb
之后找到第一行aa
,然后打印出行aa
,bb
以及它们上面的行,也有行号。
考虑下面的输入文件,第一列是行号,它不是输入文件的一部分
1 xxx
2 aa
3 xxxx
4 bb
5 bb
6 xxxx
7 aa
8 xxxx
9 xxxx
10 xxxx
11 bb
12 xxx
13 aa
14 xxx
15 bb
我想要输出:
1 xxx
2 aa
3 xxxx
4 bb
6 xxxx
7 aa
10 xxxx
11 bb
12 xxx
13 aa
14 xxx
15 bb
答案 0 :(得分:1)
这将完成这项工作:
awk '/aa/{f=1}/aa|bb/&&f{printf "%d %s\n%d %s\n",NR-1,a,NR,$0}{a=$0}/bb/{f=0}'
答案 1 :(得分:0)
命令
grep -C 1 aa fileName
将打印带有aa的所有行以及
之前和之后的行