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

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

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

  • как использовать grep для определенных файлов?
  • Получить `grep`, чтобы не выводить имя файла
  • Поиск файлов для строки и если найден, проверьте, существует ли файл с парным именем в том же каталоге
  • grep только для строк процесса, которые вызвали ошибку
  • grep: отображать имя файла один раз, затем отображать контекст с номерами строк
  • как использовать grep -v в сценарии ожидания
  • grep определенная строка из вывода
  • удалить строки, где значение поля меньше или равно 3 - sed или awk?
  • 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}' 
    Interesting Posts

    Каковы способы шифрования пароля внутри переменной среды

    Live Kali Linux показывает только черный экран и указатель мыши

    Временная шкала прерывания для одного процесса, выполняющего вывод

    Как APT выбирает, какие пакеты устанавливать?

    Установка KolibriOS на флеш-накопителе с использованием GRUB2

    Как grep pdf для математики?

    Перенаправление STDERR без промежуточного файла

    Как ограничена видимость монстра файловой системы?

    печатать заглавные слова в первом столбце файла

    Как накапливать некоторые значения в столбце на основе информации в другом столбце из того же файла данных?

    Проблема с Internet Debian 6: ifconfig не показывает eth0

    Intel Графическая ошибка: i915 имеет фиктивное выравнивание

    Как создать несколько файлов с базовым контентом – Parrot Linux

    Когда я пытаюсь запустить комментарий, я получаю ошибку `Команда не может быть найдена, потому что '/ usr / bin' не входит в переменную среды PATH '

    Как я могу проверить заряд Apple iPod Shuffle?

    Linux и Unix - лучшая ОС в мире.