我想在搜索模式前加上[结果编号],而不考虑行。
示例:
段落的功能是标记暂停,将段落与之前的段落区分开。如果在段落前加上标题或副标题,则缩进是多余的,因此可以省略
如何在每次比赛之前插入[nth]个结果?
所需的输出:
[1]段落的功能是标记暂停,将[2]段落与之前的段落区别开来。如果[3]段落前面有标题或副标题,则缩进是多余的,因此可以省略。
我似乎快到了,但是我如何打印周围的内容和火柴呢?
awk 'BEGIN { RS=" "; n=1 } /paragraph/ { print "[" n++ "]"" " $0}' paragraphfile
[1] paragraph
[2] paragraph
[3] paragraph
答案 0 :(得分:2)
您只需要对其进行一些修改即可:1)将输出分隔符与输入分隔符匹配,以及2)打印出不匹配的记录以及匹配的记录:
$ awk 'BEGIN { ORS=RS=" "; n=1 } /paragraph/ { print "[" n++ "]"" " $0} !/paragraph/' paragraphfile
更新:哦,您可能还应该修改它以进行全记录匹配,以避免例如it
与title
和omitted
匹配,甚至不用考虑a
:
$ awk 'BEGIN { ORS=RS=" "; n=1 } /\<a\>/ { print "[" n++ "]"" " $0} !/\<a\>/' paragraphfile
不幸的是,awk
似乎没有“不区分大小写”的匹配,因此The
和the
是“不同”的词。您需要切换到Perl
来处理该问题。
更新2:或者对每个单词自己“大写”:
$ awk 'BEGIN { ORS=RS=" "; n=1 } /\<[Tt]he\>/ { print "[" n++ "]"" " $0} !/\<[Tt]he\>/' paragraphfile