Моя команда sed хорошо работает на командной строке, но когда я поместил ее в сценарий удара и называю ее с
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
-e
опция sed
должен ввести допустимое sed
выражение, не имя файла, содержащее sed
команды, -f
опция для имени файла, содержащего допустимый sed
выражения.
В Вашем случае:
sed -e sedscript.sh
рассматривается как замену (s
) операция sed
поскольку выражение запускается с s
, с e
как разделитель для s
(замена), и sed
справедливо жалуется на незавершенный s
(замена) команда.
Весело проведите время:
% sed -e sedscript.sheFOOe <<<'dscript.shBAR'
FOOBAR
Что можно сделать:
Ваш файл является обязательно сценарием оболочки, Вы можете простой выполнять это как так
Использовать -e
помещать expession на командную строку непосредственно, -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