在unix中打印第一个出现的第一段

时间:2017-05-26 10:16:21

标签: unix awk sed

我有2段(例如)

<name>abcd</name><value>efgh</value>
<name>hijk</name><value>lmno</value>

<name>kjhg</name><value>abcd</value>
<name>jjjj</name><value>llll</value>

我想搜索段落中是否存在a(第一次出现)并打印整个段落。 我的输出应如下:

<name>abcd</name><value>efgh</value>

2 个答案:

答案 0 :(得分:0)

您可以通过取消设置记录分隔符RS在#34;段模式&#34;中使用awk:

awk -v RS= '/a/ { print; exit }' file

当段落与正则表达式/a/匹配时,awk会打印并退出。

答案 1 :(得分:0)

使用grep:

grep "<name>.*a.*</name>" file

这将输出文件中的所有行,其中名称标记中有“a”。点(。) - 表示任何字符。正则表达式后跟星号(*)匹配零个或多个正则表达式。如果有任何选择,则使用一行中的第一个匹配字符串。