【发布时间】:2019-04-17 11:36:12
【问题描述】:
来自this 我找到了该命令,它无需任何命令替换即可工作。但是如果我尝试在命令中替换一个变量,我会遇到以下问题。
注意:我使用的是 sed 命令(BSD OSX)/MacOS
要重现,只需使用以下内容创建一个 file.txt:
SOME_TEXT
CHANGE_THIS
CHANGE_THIS
CHANGE_THIS
在终端中添加 TMP 变量:
TMP=export PATH=/Users/Name/with pace/and_variables:$PATH
现在使用这个命令:
sed -i '' "1h; 1 $ { x; s/CHANGE_THIS/$TMP/; p; }" file.txt
我收到此错误:
sed: 1: "1h; 1 $ { x; s/CHANGE_T ...": invalid command code $
在一个 privious 答案中,我得到了这个(“,”添加到“1,$”:
sed -i '' "1h; 1,$ { x; s/CHANGE_THIS/$TMP/; p; }" file.txt
预期的输出文件.txt
SOME_TEXT
export PATH=/Users/Name/with pace/and_variables:$PATH
CHANGE_THIS
CHANGE_THIS
我明白了:
SOME_TEXT
SOME_TEXT
SOME_TEXT
SOME_TEXT
【问题讨论】:
-
既然可以直接将文本粘贴到 sed 命令中,为什么还要使用变量呢?如果你真的想这样做,试试
"$TMP"。