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

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

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-й столбец.

  • Bash: удалить числа (штрих-числовые символы) из строковой переменной
  • Есть ли tr для перевода в более длинные строки?
  • Свернуть повторяющиеся символы
  • Проверьте, имеет ли содержимое файла длину X и содержит только определенные символы
  • Что делает хэш в $ {parameter / # pattern / string}?
  • Используйте «find» из определенного относительного каталога
  • Извлечение строки через утверждения grep regex
  • Получить имя каталога из имени файла
  • Замените строку в строке новой строкой (\ n) в Bash
  • Удалить часть пути из переменной содержимого
  • Как извлечь часть имени файла в сценарий оболочки unix / linux
  • Как добавить соответствующее количество 0 в числа, содержащиеся в именах изображений?
  • Interesting Posts

    Когда файлы перемещаются, они хранятся в памяти?

    Могу ли я настроить режим «Только просмотр» для Awesome-WM?

    bash: безопасное использование пробелов в поиске

    Расположение файлов приложений?

    Trick для создания ограниченного пользователя linux. Я могу удаленно управлять независимо от того, где он подключается.

    Могу ли я восстановить имена файлов из отказавшего RAID0 (Linux Debian 5.0.8)

    Установочный носитель Debian с несвободными пакетами?

    Удалить из курсора в конец строки на VI

    Сопоставляет ли символическая ссылка с диска A на диск B на ввод-вывод на диске A?

    Как исключить список полных путей каталога в команде find в Solaris

    стороннее программное обеспечение для аудита Linux

    Ограничительные «групповые» разрешения, но открывают «мировые» разрешения?

    -p и -o comm не работают вместе?

    Есть ли способ обновить версию ядра без перезагрузки?

    Как переустановить syslinux на переформатированный (fat32 to fat16) раздел

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