В чем разница между sed -i -e и sed -ie? Не очень понятно от помощи sed --help

  -e script, --expression=script
                 add the script to the commands to be executed

Во втором случае он создает какой-то файл резервной копии?

Вообще утилиты Unix не разрешают объединять флаги?

Просто пример, чтобы показать, что происходит:

echo "bla" > 1.txt
cat 1.txt
bla
sed -i -e 's:bla:blakva:g' 1.txt
cat 1.txt
blakva
sed -ie 's:bla:blakva:g' 1.txt
cat 1.txt
blakvakva
*Note: also 1.txte is created, containing
cat 1.txte
blakva

Также еще не уверен, что -e делает в моем примере, потому что sed -i 's:bla:blakva:g' 1.txt тоже работает.

8
mrgloom 24 Апр 2017 в 10:46

2 ответа

Лучший ответ

Когда вы даете sed -i -e, sed видит два варианта.

Но когда вы даете sed -ie, sed видит вариант -i только с suffix как e. Вот почему вы получили резервную копию файла с суффиксом e.

От man sed:

-i [SUFFIX], --in-place [= SUFFIX]

редактировать файлы на месте (делает резервную копию, если поставляется SUFFIX)

8
sat 24 Апр 2017 в 08:01

Параметр -i означает, что он изменяет на месте файл, который вы собираете. В противном случае sed просто покажите, какие изменения были сделаны. Если вы добавите суффикс после -i (например, -i.bck), он создаст резервную копию входного файла, а затем добавит предоставленный суффикс.

Опция -e позволяет вам предоставлять сценарий sed вместо аргументов командной строки.

5
jehutyy 24 Апр 2017 в 07:55