Я хотів би 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 для відповіді № 1sed -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 "