Как вырезать каждую строку из определенной строки?

input.txt:

john_Apple01_xyz_1 john_Fruit_Apple01_abc_c1 john_Apple21_trs_1 john_Fruit_Apple21_efg_1 john_Fruit_Apple21_tefg_1 

Желаемый результат:

 Apple01_xyz_1 Apple01_abc_c1 Apple21_trs_1 Apple21_efg_1 Apple21_tefg_1 

Как использовать nawk или sed, чтобы вырезать ведущую часть каждый раз, когда Apple находится в строке?

Я использую KSH в Solaris 10.

2 Solutions collect form web for “Как вырезать каждую строку из определенной строки?”

Комментарий @ cuonglm показывает, как вы можете сделать это с помощью sed :

 sed -e 's/.*\(Apple\)/\1/' input.txt 

Вы также можете использовать старый добрый grep :

 grep -o 'Apple.*' input.txt 

Caveat 1 – У меня нет солярис, поэтому может быть, что greys Solaris не имеет опции -o . YMMV.

Caveat 2 – Если у вашего входного файла есть строки, которые вообще не содержат никаких Apple , то они вообще не будут отображаться на выходе. Не уверен, что это то поведение, которое вы хотите. Если нет, то ответа sed будет достаточно.

Вы попросили nawk или sed . Как вы упоминаете ksh , почему бы не сделать чистую версию оболочки?

Следующие действия выполняются в любой совместимой с POSIX оболочке:

 p="Apple" while read line ; do case $line in (*$p*) echo $p${line#*$p};; esac done <<! john_Apple01_xyz_1 john_Fruit_Apple01_abc_c1 john_Apple21_trs_1 john_Fruit_Apple21_efg_1 john_Fruit_Apple21_tefg_1 ! 

Это приводит к:

 Apple01_xyz_1 Apple01_abc_c1 Apple21_trs_1 Apple21_efg_1 Apple21_tefg_1 

чистая оболочка

  • Распространяемое завершение для моих сценариев bash
  • Преодоление новых строк с помощью grep -o
  • ожидать сценария для получения вывода для нескольких серверов
  • Shell: как использовать 2 переменные с условием
  • Как я могу генерировать случайное 64-битное целое число со знаком с macOS?
  • Цветной вывод из сценария Bash
  • Отображает и их относительное положение в сценарии оболочки
  • echo $ вместе с переменной
  • найти и удалить дубликаты в каталоге
  • Не удалось отслеживать ошибку
  • Помогите разобрать эту команду `find`
  • Interesting Posts

    / usr / bin / vim vs. / bin / vim

    Как настроить RAID 1 из режима восстановления?

    Как разбить раздел crypt_LUKS пополам с LVM?

    Является ли dockerfile yum использующим репозитории yum хоста?

    Входной сигнал трубы для поиска команды

    Как понять определение простой команды?

    Когда именно (и самое раннее) все блок-устройства были перечислены во время загрузки Linux?

    Проблема с установкой голосового и видео плагина Google для Gmail

    Запросы на поиск труб в vim или менее

    Настройте, где находится блок среды GRUB2

    Какая команда всегда генерирует один и тот же UUID через / proc / sys / kernel

    Возможно ли отключить SSD в режиме ожидания / сна / S3?

    Получить общую продолжительность видеофайлов в каталоге

    Diff, действующий очень странно, сообщает, что длинные блоки удалены, когда короткие биты по всему блоку были изменены, удалены или добавлены

    Создание раздела подкачки с использованием lvm

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