我有一个文件,
mine()
我的问题是我想编写一个脚本,检查以下段落是否存在,我还想将段落存储在变量中进行比较。
Published 3EO's
Save completed
Trade saving save successful for 123
Published 3EO's
Save completed
Trade saving save successful for 234
Published 4EO's
Save completed
Trade saving save successful for trade
5666688|000|b
我写得像这样
Published 3EO's
Save completed
Trade saving save successful for 123
其中$ file包含原始段落。
问题是,它返回两个以上的值,第1和第2段。 但我只想要一个我认为匹配的段落。
任何帮助将不胜感激。
答案 0 :(得分:1)
使用sed:
$ output=$(sed -n "/Published 3EO's/N;{/Save completed/N;{/Trade saving save successful for 123/p}}" file)
$ echo "$output"
Published 3EO's
Save completed
Trade saving save successful for 123
答案 1 :(得分:0)
您可以使用awk
:
awk "/Published 3EO's/ && /Save completed/ && /and so on.../" RS='' file.txt
将RS
设置为空字符串是一项特殊功能。它会将文本分成段落。
来自man awk
:
如果RS设置为空字符串,则记录 由空行分隔。当RS设置为空字符串时,换行符始终充当字段分隔符, 除了FS可能具有的任何价值之外。