Perl 字符串的Grep正则表达式;“公司”;并替换为“;“老公司”;
我需要搜索字符串“company”,但该字符串以不同的方式重复 例如:“公司”更改了名称,但没有完全更改,只是添加了一个新名称。所以我现在需要做的是,找到公司,换成老公司 现在,我需要到处查找公司名称,更改名称,我需要作废以查找公司旧版,因为在某些情况下,它已经存在Perl 字符串的Grep正则表达式;“公司”;并替换为“;“老公司”;,perl,awk,sed,grep,Perl,Awk,Sed,Grep,我需要搜索字符串“company”,但该字符串以不同的方式重复 例如:“公司”更改了名称,但没有完全更改,只是添加了一个新名称。所以我现在需要做的是,找到公司,换成老公司 现在,我需要到处查找公司名称,更改名称,我需要作废以查找公司旧版,因为在某些情况下,它已经存在 我已经完成了grep-rl“company”,但它为我带来了所有的功能。如果你想进行替换,可能类似于 perl -pe 'BEGIN { %h=("company old" => "company old", "company
我已经完成了grep-rl“company”,但它为我带来了所有的功能。如果你想进行替换,可能类似于
perl -pe 'BEGIN { %h=("company old" => "company old", "company" => "Whizzbang, Inc.") }
s/(company old|company)/$h{$1}/g'
这将通过将“公司旧版”替换为它们本身来绕过它们,然后用新字符串替换任何其他匹配项。如果您只想打印包含
公司
但不包含公司旧版
的每一行,则只需:
awk '/company/ && !/company old/' file
如果您想替换不属于旧公司的公司的所有实例,请执行以下操作:
$ 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
如果是其他问题,请编辑您的问题以举例说明。提供准确的输入和所需的输出将非常好。您期望的公司
是否具有特殊属性?您可能想看看pcregrep
,它支持类似perl的前瞻模式,如公司(?!old)
(匹配“公司”如果后面没有“old”)。但是,是的,你的问题的具体说明是什么?@CongMa不需要pcre grep,grep-oP'company(?!\s+old\b)
ok,,如果做了“grep-oP'company(?!\s+old\b)”,那么“grep-oP'company(?!\s+old\b)”只会查找company而不是**company old,对吗?谢谢,我也会尝试,如果不起作用,我可以回滚