我需要搜索字符串“company”,但这个字符串会以不同的方式重复。
ex:“公司”更改了名称,但没有完全更改它只是添加了一个新名称。所以我现在需要做的是找到公司并改变公司。
现在我需要在每个地方找到公司名称,更改我需要的名称以找到公司旧,因为在某些情况下它已经存在。
我做过grep -rl“公司”但是把它全部带给我。
答案 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}}
如果还有其他内容,请编辑您的问题,以便通过示例进行说明。