Что касается этой команды, которая делает работу:Можно ли изменить эту команду AWK, чтобы не только распечатать совпадение, но и удалить совпадение?
awk '
/Start/{f=1;rec=""}
f{rec=rec $0 ORS}
/End/{if (rec~/middle/) printf "%s",rec}
' original-file.txt > new-file-with-match.txt
Как этот сценарий будет изменен на:
- печати & вывода матч в новом-файл-с-match.txt (это теперь работает)
- удалить матч в оригинальном-file.txt
STEP1 (?): оригинал-е ile.txt
blah1234 Start blah.. blah.. middle blah... End blah5324
STEP2: новый-файл-с match.txt
Start blah..blah blah.. middle blah... End
STEP3: оригинал-file.txt (заключительный этап)
blah1234 blah5324
Могло ли это сделать проще с SED?
Префикс вашего кода с четырьмя пробелами. Пожалуйста, взгляните на [edit-help] (http://stackoverflow.com/editing-help). – Cyrus
[изменить] ваш вопрос, чтобы включить краткий, проверяемый ввод образца и ожидаемый результат, правильно отформатированный кнопкой '{}'. sed для простых подстановок на отдельных линиях, вот и все. То, что вы пытаетесь сделать, - это не простая замена на отдельные строки, и поэтому это не работа для sed. Похоже, это будет просто с awk, но пока вы не предоставите недостающую информацию, которую трудно сказать. –