Вывести одну строку перед совпадением, если сопоставляется столбец - PullRequest
0 голосов
/ 15 мая 2019

Я ищу регистр совпадений в файле.

В 3-м столбце я хочу найти запись «0.000000», появляющуюся впервые; и затем напечатайте эту строку, а также одну строку раньше. Для этого я написал команду:

grep -m1 -B1 '0.000000'

Но эта команда не ищет совпадения в нужной 3-й строке. Вместо этого он находит совпадение в любой позиции и печатает две строки. Например, ниже, он находит регистр соответствия в 8-м столбце.

enter image description here

1 Ответ

1 голос
/ 15 мая 2019

grep не подходит для этого, вы должны использовать awk, если это возможно. В следующем примере третий столбец сравнивается со строкой 0.000000 и печатается. Обратите внимание, что блок {prev=$0} предназначен для сохранения предыдущей строки в переменной prev из каждой строки. exit используется, поскольку вы хотите только первый матч.

awk '$3=="0.000000"{print prev RS $0 ;exit}{prev=$0}' inputfile
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...