我有大量的文字,我只打印包含多个字符串之一的行。每行可以包含多个字符串。
规则示例:
(房子|商场|建筑物)
我想标记找到的字符串,以便让结果更容易阅读。
我想要的结果示例:
新记录:合同中的两栋纽约房屋,每栋房屋近500万美元。
新纪录:两个纽约@ house @ s签订合同,每人近500万美元。
我知道我可以找到位置,修剪,添加标记,添加字符串等。
我问是否有办法在一个命令中标记找到的字符串。
感谢。
答案 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
}