sed替换给定字符串的中间文本
我有一个字符串分配给一个变量,如下所示sed替换给定字符串的中间文本,sed,Sed,我有一个字符串分配给一个变量,如下所示 FHI=(01)00840682109666(21)BCR12345675VI(11)200709 其中,我想使用sed将字符串“BCR12345675VI”替换为“GHI87654321VH” sed -i -E -e '/FHI/s/(.{26}).(.*)/\1X\2/' /test 使用上述sed命令,只有第一个字符“B”被替换为“X”。BCR12345675VI有13个字符,因此实际匹配13个字符。 而且X很好,X,而不是GHI8765432
FHI=(01)00840682109666(21)BCR12345675VI(11)200709
其中,我想使用sed将字符串“BCR12345675VI”替换为“GHI87654321VH”
sed -i -E -e '/FHI/s/(.{26}).(.*)/\1X\2/' /test
使用上述sed命令,只有第一个字符“B”被替换为“X”。
BCR12345675VI
有13个字符,因此实际匹配13个字符。
而且X
很好,X
,而不是GHI87654321VH
。因此,替换您想要替换的内容,而不是X
s/(.{26}).{13}(.*)/\1GHI87654321VH\2/
顺便说一句,(.*)
有点无用-替换只在字符串的匹配部分运行。它可能会被删除:
s/(.{26}).{13}/\1GHI87654321VH/
s/BCR12345675VI/GHI87654321VH/
?如果我在perl脚本中使用相同的字符串,则它不会替换匹配的字符串,而是删除该行,并按如下方式打印“^AGHI87654321VH^B”