我正在尝试在第一行之后将定义的bash变量插入到文本文档中:
sed -i "2i ${storm}" ${HOMEDIR}${PATH1}${YMD}/tmp_tc_tracks
以上命令对我不起作用......
答案 0 :(得分:1)
尝试转义$
,如此:
sed -i "2i \${storm}" ${HOMEDIR}${PATH1}${YMD}/tmp_tc_tracks
您的shell可能正在尝试在您的环境中找到${storm}
,但因为它无法摆脱它。
没有逃脱,我看到以下错误:
ryan@bsp1:~/tmp$ sed -i "2i ${asdf}" test.txt
sed: -e expression #1, char 3: expected \ after `a', `c' or `i'
答案 1 :(得分:0)
您可以使用awk轻松完成此操作:
$ cat file
line 1
line 2
line 3
$ var="new line"
$ awk -v v="$var" 'NR==2{print v}1' file
line 1
new line
line 2
line 3
如果要覆盖原始文件,可以使用中间临时文件执行标准技巧:
awk -v v="$var" 'NR==2{print v}1' file > tmp && mv tmp file
答案 2 :(得分:0)
sed "2 i\\
${storm}" ${HOMEDIR}${PATH1}${YMD}/tmp_tc_tracks
var替换需要双引号,但这也意味着转义\\
命令之后所需的转义字符(i
)以及此后的新行
答案 3 :(得分:0)
单引号也应该有效
sed -i '2i ${storm}' file
双引号启用shell扩展,单引号将文本视为文字