AWK - 在一个命令中用符号括起找到的字符串

时间:2015-10-22 08:21:03

标签: string awk

我有大量的文字,我只打印包含多个字符串之一的行。每行可以包含多个字符串。

规则示例:

(房子|商场|建筑物)

我想标记找到的字符串,以便让结果更容易阅读。

我想要的结果示例:

新记录:合同中的两栋纽约房屋,每栋房屋近500万美元。

新纪录:两个纽约@ house @ s签订合同,每人近500万美元。

我知道我可以找到位置,修剪,添加标记,添加字符串等。

我问是否有办法在一个命令中标记找到的字符串。

感谢。

1 个答案:

答案 0 :(得分:1)

http://pubs.opengroup.org/onlinepubs/009695399/utilities/awk.html

  

gsub ere repl [,in])

     

表现得像sub(见下文),除了它应该替换所有出现的正则表达式......

     

sub ere repl [, in ])

     

替换字符串repl代替第一个实例   在字符串中扩展正则表达式ERE并返回数字   换人。出现在字符串repl中的&符号(''')应该是   被匹配ERE的字符串替换......

BEGIN {
    r = "house|mall|building"
    s = "Two New York houses under contract for nearly $5 million each."
    gsub(r, "@&@", s)
    print s
}