字符串“公司”的Grep正则表达式替换“公司旧”

时间:2015-04-16 11:43:24

标签: perl awk sed grep

我需要搜索字符串“company”,但这个字符串会以不同的方式重复。

ex:“公司”更改了名称,但没有完全更改它只是添加了一个新名称。所以我现在需要做的是找到公司并改变公司。

现在我需要在每个地方找到公司名称,更改我需要的名称以找到公司旧,因为在某些情况下它已经存在。

我做过grep -rl“公司”但是把它全部带给我。

2 个答案:

答案 0 :(得分:0)

如果你想进行替换,可能会像

那样
perl -pe 'BEGIN { %h=("company old" => "company old", "company" => "Whizzbang, Inc.") }
    s/(company old|company)/$h{$1}/g'

这将绕过“公司旧”事件,用自己替换它们,然后用新字符串替换任何其他匹配。

答案 1 :(得分:0)

如果您只想打印包含company但不包含company old的每一行,那么您只需要:

awk '/company/ && !/company old/' file

如果您希望替换company中不属于company old的所有$ cat file foo company old bar company indeed $ awk '{gsub(/company old/,RS); gsub(/company/,"Acme Corp"); gsub(RS,"company old")}1' file foo company old bar Acme Corp indeed 实例:

{{1}}

如果还有其他内容,请编辑您的问题,以便通过示例进行说明。