Вы могли пойти с Arch Linux, но это строго не встречает Ваш "пользовательский" дистрибутив, я думаю.
Я пошел бы с Linux С нуля. Это не действительно дистрибутив, а скорее система для создания Вашего собственного дистрибутива. Я думаю, что Вы найдете, что у Вас есть немного "жира" в Вашей системе, когда Вы сделаны, поскольку это имеет Вас здание и установка Tcl/Tk (или по крайней мере это привыкло для), и несколько других вещей, которые не строго необходимы, но позволяют Вам выполнить тестовые сценарии полуавтоматически.
Самый простой способ решить его использование grep
только, должен передать еще одно инвертированное по каналу grep
в конце. Например:
grep -A 4 "The mail system" temp.txt | grep -v "The mail system" | grep -v '^\d*$'
Если Вы не привязываетесь к использованию grep
, попробовать sed
...
sed -n '/The mail system/{n;n;p}'
Когда это находит строку, содержащую "Почтовую систему", это читает следующую строку дважды, через n;n;
, отбрасывание каждой предыдущей строки, как это делает так.
Это оставляет 3-ю строку Вашей группы в пространстве шаблона, которое затем печатается через sed's p
команда.. Продвижение -n
опция предотвращает всю другую печать.
Для печати следующих двух строк также это - просто случай следующих и печати n;p
вдвое больше.
sed -n '/The mail system/{n; n;p; n;p; n;p}'
Чтения следующей строки для строк, которых Вы требуете, могут быть накоплены и распечатаны единственный блок со всего один p
... N
читает следующую строку и добавляет его к пространству шаблона,
Вот сжатая версия финала...
sed -n '/The mail system/{n;n;N;N;p}'
Если бы Вы хотите разделитель группы, подобный тому, что произвел бы grep, можно использовать команду вставки sed i
(который должен быть последней командой на строке)...
Вот синтаксис для включения разделителя группы
sed -n '/The mail system/{n;n;N;N;p;i--
}' > output-file # or | ...
Вот вывод для первого соответствия:
<slavicatomic118@hotmail.com>: host mx1.hotmail.com[65.54.188.94] said: 550
Requested action not taken: mailbox unavailable (in reply to RCPT TO
command)
--
grep -A 2 -B -2 "The mail system" mbox_file
-B
для предыдущих строк, таким образом, никакая потребность дать - отрицательная величина.
grep -A 2 -B 2 "The mail system" mbox_file # This will work please check
-A 2 -B 2
печать от двух строк перед контекстом к 2 строкам после контекста. Вопрос о печати от 2 строк после контекста к 4 строкам после контекста.
– daniel.neumann
12.02.2018, 16:56
Я не вижу никакой смысл в использовании только grep (s), кроме того, если это - строгое ограничение. Это не может быть сделано с одним вызовом к grep.
grep -A 2 "The mail system" mbox_file | tail -n +3
Это печатает следующую 1 строку после соответствия regexp, с помощью Perl
perl -ne 'print if( (/The mail system/ && ($end=1))..!$end-- )'
Если вы хотите удалить первые 2 строки передать его наsed
sed '1,2d'
как в
grep -A 2 "The mail system" mbox_file | sed '1,2d'