получить значение после определенного слова

У меня есть этот файл

1 deiauk David Smith from California 12 58 2 edvin from Nevada 12 5 8 95 2 48 5 3 jaco My Name Is Jacob I'm from NY 5 6 845 156 585 4 from Miami 

И мне нужно получить значения после определенного слова, можно ли это сделать в оболочке? Мой вывод должен быть

 California Nevada NY Miami - California Nevada NY Miami 

4 Solutions collect form web for “получить значение после определенного слова”

Или

awk '{for (I=1;I<=NF;I++) if ($I == "from") {print $(I+1)};}' file

Используя grep , это можно сделать следующим образом:

 grep -oP "from\s+\K\w+" input.txt 

Вот,

 -o ==> option for printing only the matching part of the line -P ==> use perl-regexp \K ==> do not print that comes before \K (zero-width look-behind assertion) \w ==> match word characters 

Этот sed один лайнер делает это:

  sed '/from/s/.*from \([^ ][^ ]*\)[ ]*.*/\1/' input 

Я предполагаю пробел перед строкой «from». Если вы хотите иметь поля с разделителями табуляции, вам может потребоваться вставить символ табуляции во всех трех выражениях соответствия символов, между «['и»].

Читаемым решением будет:

 awk -F '${fixed_string}' '{print $2}' file | awk '{print $1}' 

Что оно делает:

  • -F '${fixed_string}' отделяет ввод до и после данной строки. Итак, с вашим файлом, когда мы устанавливаем fixed_string='from' , print $2 даст:

    California 12 58 Nevada 12 5 8 95 2 48 5 NY 5 6 845 156 585 Miami

  • Теперь вам нужен только первый столбец этого ввода. Таким образом, мы выводим вывод первого awk на awk и печатаем 1-й столбец.

  • Замена части строки URL в файле Linux другой строкой
  • Разделение переменной bash
  • Извлечь часть строки в сценарии bash
  • подстановка параметров оболочки для переименования файлов
  • Изменение части строки в сценарии bash
  • скрипт для проверки запущенных служб на определенных портах
  • Как заменить подстроку из переменной?
  • Используйте «find» из определенного относительного каталога
  • Команда для удаления части данных JSON из каждой строки?
  • Как префикс обратной косой черты для вывода
  • извлекать строку между двойными кавычками
  • Linux и Unix - лучшая ОС в мире.