Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
sed替换给定字符串的中间文本_Sed - Fatal编程技术网

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”