如何替换文件中的字符串,使得要替换的字符串总是被某个字符串替换。
例如:如果我想用123替换ABC,
INPUT
ABC
ABCXYZ
ABCDHD
ABC
CDE
输出
ABC
123XYZ
123DHD
ABC
CDE
我尝试使用sed但没有成功。
答案 0 :(得分:6)
没有使用预测捕获:
s/ABC(?=\S)/123/;
答案 1 :(得分:2)
sed -i 's/ABC\(.+\)$/123\1/g' myFile.txt
ABC
,匹配文字ABC!
\(.+\)
匹配至少1个其他角色在第1组中捕获它
123\1
用123替换洞穴事物,然后用第1组中捕获的内容替换
答案 2 :(得分:2)
perl -pi.bak -e 's/^ABC(.+)$/123$1/g' file.txt
然而,这也将取代空白。如果您不希望这样,那么您可以使用.+
而不是\S+
。
-i.bak
选项会在file.txt
中保存file.txt.bak
的备份,以防您更换了替换内容。
答案 3 :(得分:1)
这个对我有用:
$ sed -r s/ABC\(.+\)/123\\1/g <file>
ABC
123XYZ
123DHD
ABC
CDE
答案 4 :(得分:0)
对于没有人使用过\B
感到惊讶。
#!/usr/bin/perl
use strict;
use warnings;
while (<DATA>) {
s/ABC\B/123/;
print;
}
__DATA__
ABC
ABCXYZ
ABCDHD
ABC
CDE