Arhn - архитектура программирования

Получение текста после совпадения из стандартного вывода

Я хочу извлечь следующее слово/число после определенных слов, которые я нахожу, используя grep или еще что-то.

В качестве примера скажем, что это то, что у меня есть в стандартном выводе

string-a0 match-a1 string-a2 string-a3
string-b0 string-b1 match-b2 string-b3
match-c0 string-c1 string-c2 string-c3

Я хочу остаться только с этим

string-a2
string-b3
string-c1

учтите, что match-a1 != match-b2 != match-c0

РЕДАКТИРОВАТЬ

Конкретный пример...

стандартный вывод это

open 0.23 date ...
close 1.52 date ...
open 2.34 date ...
close 5.92 date ...
open 10.78 date ...
close 24.21 date ...
total 45.3

Я ищу слова open, close и total, поэтому вывод должен быть

0.23
1.52
2.34
5.92
10.78
24.21
45.3
13.07.2016

  • почему строка-a2 в строке 1 и почему не строка-a0? 13.07.2016
  • потому что мне нужна следующая строка после совпадения 13.07.2016
  • Не могли бы вы уточнить условие совпадения? Или лучший пример того, что вы пытаетесь сделать? 13.07.2016
  • Я думал, что сделал ... Я попробую еще раз 13.07.2016
  • Я не знаю bash, но я предполагаю, что регулярное выражение будет match-[abc][012] (\S+) и захватит первую группу захвата. 13.07.2016
  • @MichelleTan Я добавил еще один (конкретный) пример 13.07.2016
  • Простой \b(\d+\.\d+)\b просто захватывает десятичное число? Посмотрите здесь. 13.07.2016
  • Всегда ли «открыто», «закрыто», «всего» в первом столбце? Из вашего первого примера я подумал, что он может отличаться. 13.07.2016
  • @ Арниал нет. Проверьте общий пример 13.07.2016
  • @123 это не дубликат вопроса, который вы отметили, поскольку у меня есть набор слов, который мне нужно сопоставить с другим вопросом, где требуется только одно совпадение. Это может быть тривиально для тех, кто купается в славе bash и awk, но, к сожалению, я еще не там. 13.07.2016
  • @YoniLevy Я не голосовал за закрытие как дубликат. Я проголосовал за закрытие, поскольку непонятно, о чем вы спрашиваете. 13.07.2016
  • @ 123 ну... У меня есть 2 примера с 2 быстрыми ответами, которые дали правильный ответ, поэтому я думаю, что кто-то понял это. 13.07.2016

Ответы:


1

Это не соответствует общему случаю, но работает для вашего примера:

awk '/^open|^close|^total/{print $2}' input

В общем случае, если ваше определение «строки» основано на пробелах, возможно, вы хотите:

tr -s ' \n' \\n < input | awk 'p{print; p=0} {p=/^open|^close|^total/}'
13.07.2016
  • не специфичен ли индекс $2? Мне не обязательно знать расположение следующего слова (по индексу), поэтому я поставил общий регистр с string-* и match-*. Обратите внимание, как отличается позиция соответствия 13.07.2016

  • 2

    Вы можете использовать этот awk для печати следующего слова после искомого слова:

    awk -v s='^(open|close|total)$' '{for (i=1; i<NF; i++) if ($i ~ s) print $(i+1)}' 
    
    0.23
    1.52
    2.34
    5.92
    10.78
    24.21
    45.3
    
    13.07.2016
    Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..