我有一个包含记录的文件。记录格式如下:
Record: XXXXXX [
{variable number of lines and content}
]
在记录中的某个点上,可能会有一个以
Start to do this thing
我想提取记录号和记录中与单词“开始”匹配的行
目前我正在使用
egrep "Record|Start" inputfile.txt >> outputfile.txt
但是我必须手动删除Record
没有Start
匹配的匹配行。理想情况下,我希望这一步可以完成。我将不胜感激任何建议。
使用示例文件,连续三遍进行修改:
Record: XXXXXX [
{variable number of lines and content}
Start to do this thing
]
Record: YYYYYY [
{variable number of lines and content}
Stop doing this thing
]
Record: ZZZZZZ [
{variable number of lines and content}
Start again
]
然后:
$ awk '/^Record:/ { r = $2 } /^Start/ { print r ":", $0 }' file
XXXXXX: Start to do this thing
ZZZZZZ: Start again
只要看到一行以开头的行,我们就简单地提取记录号/标签Record:
并将其保存在变量中r
。然后,当我们找到一行开头时,Start
我们将打印找到的所有记录标签和该行。
如果该行不开始与Start
,您可能必须从改变正则表达式/^Start/
来/^ *Start/
,这将允许任意数量的字和行的开始之间的间隔。
如果记录之间的文件中还有其他内容匹配,则此操作将失败Start
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句