我有这个内容的文本文件:
4
:
ID: 5
table: 4
numplan: no_change
accs-cat: no_change
cld-rule: $
cld-type: no_change
cld-numplan: no_change
clg-rule: '----------+79975532211'
--
17:
ID: 19
table: 7
numplan: no_change
accs-cat: no_change
cld-rule: $
cld-type: no_change
cld-numplan: no_change
clg-rule: '----------+79975532211'
--
18:
ID: 20
table: 3
numplan: no_change
accs-cat: no_change
cld-rule: $
cld-type: no_change
cld-numplan: no_change
clg-rule: '----------+79975532211'
--
19:
ID: 21
table: 5
numplan: no_change
accs-cat: no_change
cld-rule: $
cld-type: no_change
cld-numplan: no_change
clg-rule: '----------+79975532211'
我如何才能得到这样的结果:
4:
ID: 5
table: 4
numplan: no_change
accs-cat: no_change
cld-rule: $
cld-type: no_change
cld-numplan: no_change
clg-rule: '----------+79975532211'
然后我grep这个结果:
17:
ID: 19
table: 7
numplan: no_change
accs-cat: no_change
cld-rule: $
cld-type: no_change
cld-numplan: no_change
clg-rule: '----------+79975532211'
然后我有了这个结果:
18:
ID: 20
table: 3
numplan: no_change
accs-cat: no_change
cld-rule: $
cld-type: no_change
cld-numplan: no_change
clg-rule: '----------+79975532211'
然后我有了这个结果:
19:
ID: 21
table: 5
numplan: no_change
accs-cat: no_change
cld-rule: $
cld-type: no_change
cld-numplan: no_change
clg-rule: '----------+79975532211'
我需要grep这个结果在一个Bash脚本中。怎么做?
我需要获得第一个结果,然后接下来的结果是我的文本文件
答案 0 :(得分:1)
这将为您提供记录4
..
grep -A8 '[[:space:]]*4:' file
依此类推。该命令考虑到该记录将为8
行长,-A8
将输出匹配行以及其后的8
行。< / p>
您可以创建一个小循环来为每个感兴趣的记录执行命令,并将循环的输出重定向到text.file:
for i in 4 17 18 19 ; do
grep -E -A8 "[[:space:]]*$i:" input.txt
done > output.txt
或者,您可以使用记录分隔符awk
:
RS="\n *--\n"
awk -F$'\n' '$1 ~ /\y(4|17|18|19):/' RS="\n *--\n" input.txt > output.txt
答案 1 :(得分:0)
谢谢!它的工作!
我用这个:
for i in 4 17 18 19 ; do
grep -E -A8 "[[:space:]]*$i:" input.txt
done > output.txt