/ / Як збільшити лінію під іншою і вище (або між) - linux, unix, aix

Як збільшити лінію під іншою і вище (або між) - linux, unix, aix

Я хотів би grep для рядка, яка містить номер 638.

Вихідний файл містить текст нижче:

Please label this tape as number 1 in the arc tape sequence.

This tape contains the following logical logs:

638

Program over.
Done at Tue 25 Oct 2016 11:34:07 GMT

Моя мета - збільшити число 638. Зауважте, що кількість цих систем може відрізнятися. Я хотів би зняти наступний рядок після тексту "Ця стрічка містить наступні логічні журнали:" для друку потрібної рядкової цифри 638 або grep вище "Програми". отримати 638.

Я пробував нижче, і це не працює:

grep -A "This tape contains the following logical logs" filename |
grep -B 1 "Program over." | grep -v "Program over."

Grep -A і grep -B не працює з якихось причин.

Я отримую таке повідомлення про помилку:

grep: Not a recognized flag: A

Чи є там awk команда, яку можна використати для цього?

Відповіді:

1 для відповіді № 1
sed -n "/logical/{n;n;p;}" ontape-level0.out

0 для відповіді № 2

-A (для після) та -B (для попереднього) вимагають числовий аргумент, як це пояснено на сторінці man. як от:

grep -B 1 -A 2 "This tape contains the following logical logs" filename

Це покращить блок, який ви згадали.


0 для відповіді № 3

Це працює для мене:

sed -n "/ Ця стрічка містить наступні логічні журнали: / {n; n; p;}" ontape-level0.out "