Linux Bash脚本:在文件特定行的最后一个字符处追加文本
我试图在bash脚本中文件特定行的最后一个字符处追加一个变量 该文件名为Linux Bash脚本:在文件特定行的最后一个字符处追加文本,linux,bash,append,Linux,Bash,Append,我试图在bash脚本中文件特定行的最后一个字符处追加一个变量 该文件名为myfile.txt,我要做的是在包含唯一字符串MYVERSION的文件行的最后一个字符后面添加名为VERSION的变量的内容 也就是说,如果该行中存在以下内容: MYVERSION=0.1 MYVERSION=0.1-custom_P1 和VERSION=“-custom_P1”然后,我想要以下内容: MYVERSION=0.1 MYVERSION=0.1-custom_P1 谢谢大家的帮助。试试这个: sed -
myfile.txt
,我要做的是在包含唯一字符串MYVERSION
的文件行的最后一个字符后面添加名为VERSION
的变量的内容
也就是说,如果该行中存在以下内容:
MYVERSION=0.1
MYVERSION=0.1-custom_P1
和VERSION=“-custom_P1”
然后,我想要以下内容:
MYVERSION=0.1
MYVERSION=0.1-custom_P1
谢谢大家的帮助。试试这个:
sed -i "/^MYVERSION=/ s/\$/$VERSION/" myfile.txt
其思想是找到一行以MYVERSION=开头,然后用$VERSION环境变量的内容替换该行的结尾
编辑:最初我不确定是否需要转义第一个$
,但是@sehe的评论和它的投票人说服了我。试试看
sed -e "s/^MYVERSION=/MYVERSION=.*$/&${VERSION}/g" < myfile.txt
sed-e“s/^MYVERSION=/MYVERSION=.*$/&${VERSION}/g”
该命令将VERSION的值附加到带有“MYVERSION=”的行中。我认为您误解了这个问题:VERSION已经是一个shell变量。Ohh..当然,在您键入的sed命令的末尾,它会显示文件名(即myfile.txt),以防有人怀疑@limp:感谢您指出这一点,我在命令末尾添加了
myfile.txt
。我还想做的是能够恢复“MYVERSION”
的初始值。我设法将它存储在一个名为“OLD\u MY\u VERSION”
的变量中,但当我尝试使用sed-I/^MYVERSION=/c\$$OLD\u MY\u VERSION myfile.txt进行还原时,我得到的是“$MYVERSION=0.1”
而不是“MYVERSION=0.1”
(当然没有引号)。关于如何删除额外字符($)的想法?如果我没有放入额外的$,我就不会在替换中得到“OLD\u MY\u VERSION”
变量的内容,而只是“$OLD\u MY\u VERSION”
。