Используя-e опцию с sed для выполнения sed из сценария перестал работать

Моя команда 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
3
задан 27 September 2016 в 14:36

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

Что можно сделать:

  • Ваш файл является обязательно сценарием оболочки, Вы можете простой выполнять это как так

  • Использовать -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
    
3
ответ дан 1 December 2019 в 16:21

Другие вопросы по тегам:

Похожие вопросы: