我的 sed 命令在命令行上运行良好,但当我将其放入 bash 脚本中并用
sed -e sedscript.sh
我明白了
$ sed -e sedscript.sh
sed: -e expression #1, char 12: unterminated `s' command
这是 sedscript.sh:
$cat sedscript.sh
sed 's/^ *[0-9]\+.//g' tictactoeold.py>tictactoenew.py
答案1
选项-e
是sed
输入有效的 sed
表达,不是包含命令的文件名sed
,该-f
选项用于包含有效sed
表达式的文件名。
就你的情况而言:
sed -e sedscript.sh
被视为替换(s
)操作,因为sed
表达式以 开头s
,以e
作为(替换)的分隔符s
,并且sed
正确地抱怨未终止的s
(替换)命令。
玩得开心:
% sed -e sedscript.sheFOOe <<<'dscript.shBAR'
FOOBAR
你可以做什么:
你的文件必然是一个 shell 脚本,你可以简单地执行它,如下所示
用于
-e
直接将表达式放在命令行上,-e
但不是严格需要的:sed 's/^ *[0-9]\+.//g' tictactoeold.py >tictactoenew.py sed -e 's/^ *[0-9]\+.//g' tictactoeold.py >tictactoenew.py
使用该
-f
选项,只保留sed
文件中的表达式,即将文件制作sedscript
为:s/^ *[0-9]\+.//g
然后使用
sed
以下命令:sed -f sedscript tictactoeold.py >tictactoenew.py