Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/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
Linux Bash脚本:在文件特定行的最后一个字符处追加文本_Linux_Bash_Append - Fatal编程技术网

Linux 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 -

我试图在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 -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”