Как получить текст между первой и второй строки включительно в командной строке.

sed "s/^ABC/+ABC/" <file | sed "s/DEF$/DEF+/" | tr "\n" "~" | tr "+" "\n" | grep "^ABC" | tr "~" "\n"


Эта команда выполняет следующие действия:

1. sed «s/^ABC/+ABC/» <file — заменяет строку, начинающуюся с "ABC" на "+ABC" в файле <file.
2. sed "s/DEF$/DEF+/" — заменяет строку, заканчивающуюся на "DEF" на "DEF+".
3. tr "\n" "~" — заменяет все символы новой строки на символ "~".
4. tr "+" "\n" — заменяет символ "+" на символ новой строки.
5. grep "^ABC" — ищет строки, которые начинаются с "ABC".
6. tr "~" "\n" — заменяет символ "~" на символ новой строки.

Таким образом, команда получает текст между первой и второй строками, включительно, в файле <file, заменяет некоторые символы для удобства обработки и выводит результат.

Альтернативными подходами могут быть использование команд awk или perl, которые также могут выполнять поиск и замену строк в тексте. Например:

1. awk '/ABC/ && /DEF/ {print; exit}' <file — найдет первую строку, содержащую "ABC", и последующую строку, содержащую "DEF", и выведет их.
2. perl -ne 'print if(/ABC/ .. /DEF/)' <file — найдет все строки между первой строкой, содержащей "ABC", и первой строкой, содержащей "DEF", включая их.

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *