что команда sed -e 's/\(~\).*\(~\)// делает с текстовым файлом?

Вам необходимо дать крану IP-адрес. Или, если это хост-конец интерфейса виртуальной машины, то вы бы предпочли дать IP-адрес интерфейсу виртуальной машины.

-1
10.04.2020, 13:10
1 ответ

Команда (при добавлении отсутствующей одинарной кавычки в конце )выведет на терминал все строки файла, но если в любой строке есть хотя бы два символа~(тильда ), то бит между первым и последним ~будет удален с помощью команды замены(ssed.

Пример:

$ cat file
1 2 3 ~ 4
1~2~3
Here is ~ the last ~ line ~ THE END
$ sed -e 's/\(~\).*\(~\)//' file
1 2 3 ~ 4
13
Here is  THE END

\(и \)не нужны, хотя (, так как в выражении )нет обратной -ссылки, а -eтоже можно опустить (, так как всего одно выражение ), поэтому команда эквивалентна

sed 's/~.*~//' file

Таким образом, он ничего не делает с самим файлом, но читает и модифицирует содержимое файла, создавая обработанный текст, который затем можно сохранить в новом файле с перенаправлением(sed... >newfile).


Обратная -ссылка может использоваться в этой команде, например:

sed 's/\(~\).*\1//' file

То есть сопоставьте ~, затем какой-нибудь другой текст, а затем то же самое, что мы сопоставили в первой \(...\)группе (тильду ). Но это не экономит на наборе текста и не облегчает поддержку или понимание команды, поэтому это не будет улучшением по сравнению с sed 's/~.*~//' file.

2
19.03.2021, 02:30

Теги

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