Печать Файла Между Двух Строк с SED и AWK

Из данной заметки Вы узнаете как вывести строки между двух паттернов в bash.

Я покажу как с помощью sed и awk найти и напечатать содержимое файла между двух паттернов.

В качестве примера, я создал следующий файл, который буду использовать для печати текста между строк, содержащих шаблоны.

I Love Linux
***** BEGIN *****
BASH is awesome
BASH is awesome
***** END *****
I Love Linux

Допустим нам необходимо напечатать только текст, который находится между строк, содержащих слова ‘BEGIN’ и ‘END’.

Печать Файла Между Двух Строк с SED

С помощью команды sed мы можем указать начальный шаблон и конечный шаблон, для вывода строк между ними. Синтаксис и пример приведены ниже.

Синтаксис:

sed -n '/StartPattern/,/EndPattern/p' FileName
Опции Описание
-n, —quiet, —silent Отключить автоматический вывод
p Распечатать текущую область шаблона

Пример:

sed -n '/BEGIN/,/END/p' info.txt
***** BEGIN *****
BASH is awesome
BASH is awesome
***** END *****

Печать Файла Между Двух Строк с AWK

Так же, как и для команды sed, мы указываем начальный и конечный шаблоны с помощью команды awk.

Синтаксис:

awk '/StartPattern/,/EndPattern/' FileName

Пример:

awk '/BEGIN/,/END/' info.txt
***** BEGIN *****
BASH is awesome
BASH is awesome
***** END *****

5 Replies to “Печать Файла Между Двух Строк с SED и AWK”

  1. Is it possible to capture multiple occurrances and put each occurrance in separate file ??

    1. Is it possible to capture multiple occurrances and put each occurrance in separate file ??
      Did you find a way? This might help me 🙂

  2. А как распечатать весь текст, исключая эту самую помеченную часть текста?

    1. sed ‘/StartPattern/,/EndPattern/d’

  3. hi, i want to know how to do almost the same things, find words that start and end with the same pattern. for example, find words that start and end with the letter ‘g’, note that each line has only one word

Добавить комментарий

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.