sed在最后一行之前插入变量


1

我想在最后一行之前插入一个变量。

这是我的档案。

$ cat file.txt
one
two
three
four
five

当我尝试不使用变量时,它工作正常。

$ sed -i '$i name' file.txt
$ cat file.txt
one
two
three
four
name
five

当我使用变量时,它不起作用。我尝试了双引号和反斜杠的不同组合。

$ NAME=name
$ sed -i '$i "$NAME"' file.txt
$ cat file.txt
one
two
three
four
"$NAME"
five

怎么样sed "\$i $NAME" file.txt
dsstorefile1

Answers:


1

bash单引号中,单引号用于固定的文字字符串。在需要进行变量插值,命令替换等的地方使用双引号。

您的sed命令需要同时使用文字$(以便i命令应用于文件的最后一行) $NAME要插入的变量。为此,您需要$使用反斜杠“转义”文字,以便shell不会将$i您的sed脚本中的内容解释为“替换为变量$ i的内容”而不是“literal $后跟literal i”:

顺便说一句,最好不使用该-i选项来测试这样的事情,这样sed在你弄清楚正确的语法时不会搞砸你的输入文件。-i当你确定它正在按照你想要的那样做时,添加后者。

$ NAME=name
$ sed "\$i $NAME" file.list 
one
two
three
four
name
five

0

其他方式:

$ NAME=name
$ sed '$i '"$NAME" file.list
one
two
three
four
name
five
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.