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

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 

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

  • Скрипт работает на Mac, но не Ubuntu
  • Как выйти из скрипта в сеансе ssh?
  • Необходимо обновить сценарии оболочки, чтобы они могли работать в разных * nix-вариантах
  • Я хочу поймать STDERR и STDOUT сценария с фоновым запуском
  • печать в awk
  • Обратная последовательность файла с инструментами POSIX?
  • Команда для перечисления всех имен пользователей на сервере Linux
  • Получите время, когда программа nohup R заканчивается
  • заменить столбец csv-файла на столбец из другого файла
  • Как начать новую строку каждый n-й столбец?
  • Запустить сценарий оболочки из crontab после остановки / запуска / перезапуска сервера
  • Linux и Unix - лучшая ОС в мире.