11. В заданном файле заменить все вхождения слова «DEF» на «ABC» с 5-й строки до конца только в тех строках, которые содержат слово «MNO»

Поместите всю последовательность команд, которые вы отправляете на screen, в кавычки; в противном случае первая точка с запятой завершает эту команду и отправляет остаток в оболочку, в которой вы вызываетеscreen:

screen -dm 'wget http://www.example.com/file.zip -O temp/file.zip; mv temp/file.zip downloads/file.zip'

Тем не менее, было бы целесообразно перемещать файл только в том случае, если загрузка прошла успешно:

screen -dm 'if wget http://www.example.com/file.zip -O temp/file.zip; then mv temp/file.zip downloads/file.zip; fi'
-3
13.09.2019, 07:49
2 ответа

sed может сделать это самостоятельно:

sed -e '5,${/MNO/s/DEF/ABC/g;}'

Это:

  1. Выбирает для действия только строки с 5 до конца с кодом в фигурных скобках.
  2. Затем далее выбираются только те строки из этого набора, которые содержат MNO, для действия с командой замены sдля замены DEFна ABCв этих строках.

Все остальные строки печатаются без изменений.

3
28.01.2020, 05:18

Попробуйте следующую команду

sed –n '10,$p' file1|sed '/MNO/s/ABC/DEF/'
-1
04.11.2021, 09:39

Теги

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