【发布时间】:2019-04-05 23:11:20
【问题描述】:
我有一些包含行的文件,其中一些类似于如下所示:
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
但是没有得到预期的结果。 有趣的是,通过 echo G 变量是:
"2FN 1"
但 sed 不会替换为
"2FN D 1"
你有什么建议吗?
谢谢
【问题讨论】:
-
试试
sed "s/$G/2FN D 1/g" ... -
不确定您是否正确定义了
G,但您没有使用单引号内的变量。如果要在字符串中使用变量,请使用双引号,"s/$G/2FN D 1/g" -
其实我从来没有用过双引号。这样它就可以工作了。感谢您的建议