grep изменение строки, за которой следует переменная

У меня есть файл следующего вида (с '-', служащим разделителями), и я хочу найти появление числа только тогда, когда оно следует за разделителем. Я полагаю, что это конкатенация grep '- \ n' и $ number, но я не могу найти способ сделать это правильно. благодаря..

1400 2 132 342 - 76567 1 1234 - 87 2 1400 54 - 

5 Solutions collect form web for “grep изменение строки, за которой следует переменная”

Чтобы найти переменную перед разделителем:

Использование awk :

 $ awk '/!!!!!!!!!!!/{print num}{num=$0}' inputFile 342 1234 54 

или gnu-awk :

 $ gawk 'NF && $0=$NF' RS='[!]+' inputFile 342 1234 54 

Чтобы найти переменную после разделителя:

Использование awk :

 $ awk '/!!!!!!!!!!!/{if(getline) print $0}' inputFile 76567 87 

или gnu-awk :

 $ gawk 'NR>1 && $0=$1' RS='[!]+' inputFile 76567 87 

Следующая команда

 grep '!!' -A 1 file|grep -vE '!!|\-\-' 

будет давать

 76567 87 

grep имеет переключатель -A который сообщает ему распечатать несколько строк после матча. В этом случае просто используйте -A 1 и вы получите ouptut like

 !!!!!!!!!!! 76567 -- !!!!!!!!!!! 87 -- !!!!!!!!!!! 

Теперь просто вычеркните цифры с | grep -e '[0-9]' | grep -e '[0-9]' .

используя AWK

Чтобы найти переменную перед разделителем:

 awk '{ print $NF }' RS='!!!!!!!!!!!' infile 

Вывод

 342 1234 54 

Чтобы найти переменную после разделителя:

 awk 'NR>1{ print $1 }' RS='!!!!!!!!!!!' infile 

Вывод

 76567 87 

Это число перед разделителем:

 sed -n '/[^0-9]/!h;/^-$/{g;/./p}' 

И это после:

 sed -n '/^-$/{n;/./!d;/[^0-9]/!p}' 
  • Как найти строки, начинающиеся с **
  • grep несколько строк сразу в конкретном случае
  • sed regex не работает
  • Есть ли способ изменить файл на месте?
  • Найти имена репозиториев из гитолитного информационного вывода
  • Удаление строк из шаблона в обратном порядке
  • Как указать каталоги с указанным файлом в них имеет указанный контент?
  • egrep несколько шаблонов с тире
  • Как использовать grep для возврата строк с шестнадцатеричным числом в заданном диапазоне?
  • Как использовать grep для поиска текстовой строки в файлах в подпапках родительской папки без ключа -r
  • Эмуляция статуса git - вызывается в папке без репозитория
  • Linux и Unix - лучшая ОС в мире.