У меня есть файл следующего вида (с '-', служащим разделителями), и я хочу найти появление числа только тогда, когда оно следует за разделителем. Я полагаю, что это конкатенация grep '- \ n' и $ number, но я не могу найти способ сделать это правильно. благодаря..
1400 2 132 342 - 76567 1 1234 - 87 2 1400 54 -
Использование 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}'