我有一些包含行的文件,其中一些类似于下图:
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"
您有什么建议吗?
谢谢
答案 0 :(得分:0)
问题是您试图获取bash
来解析单引号内的变量。单引号告诉bash
:“在这里不要解析任何内容,请按原样使用它”
如果您只需将sed命令中的单引号替换为双引号(如@oguzismail所建议的那样),就可以了。
如果需要,更多详细信息在这里: https://stackoverflow.com/a/13802438/236528