用bash命令替换包含变量和空格的行

时间:2018-11-01 17:16:48

标签: bash sed replace space

我有一些包含行的文件,其中一些类似于下图:

HETATM 2340  C2  2FN     1      15.566  27.839  11.677  1.00 24.33           C

我需要替换

2FN     1 

2FN D   1

使最终结果为:

HETATM 2340  C2  2FN     1      15.566  27.839  11.677  1.00 24.33           C

使用sed命令,这很容易,并且在您总是要替换相同单词的情况下

sed 's/2FN     1/2FN D   1/g' input.file > output.file

但是,如果要使用变量

A="2FN"
B="1"

在sed命令中,结果不是预期的,我想是由于文本中有多个空格要替换。

我尝试了几种方法,例如:

A="2FN"
B="1"
S='     '
G=$(echo "$LIG${S}$LIGN")
sed 's/$G/2FN D   1/g' input.file > output.file

但未获得预期结果。 有趣的是,通过回声G变量是:

"2FN     1" 

但sed不会替换为

"2FN D   1"

您有什么建议吗?

谢谢

1 个答案:

答案 0 :(得分:0)

问题是您试图获取bash来解析单引号内的变量。单引号告诉bash:“在这里不要解析任何内容,请按原样使用它”

如果您只需将sed命令中的单引号替换为双引号(如@oguzismail所建议的那样),就可以了。

如果需要,更多详细信息在这里: https://stackoverflow.com/a/13802438/236528

相关问题