字符串 "company" 的 Grep 正则表达式并替换 "company old"

Grep regex for string "company" and replace "company old"

我需要搜索一个字符串 "company" 但这个字符串以不同的方式重复。

ex: "company" 更改了名称但没有完全更改它只是添加了一个新名称。所以我现在要做的就是,找公司,换公司old。

现在我需要在每个地方找到公司名称,要更改名称我需要取消查找 company old 因为在某些情况下它已经存在了。

我已经完成了 grep -rl "company",但它全部都给我了。

如果你想执行替换,可能像

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

这将绕过 "company old" 次出现,方法是将它们替换为自身,然后用新字符串替换任何其他匹配项。

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

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

如果您想要替换不属于 company oldcompany 的所有实例:

$ 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

如果是其他问题,请编辑您的问题以举例说明。