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

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 

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

  • Сценарий оболочки Loop, если входной файл имеет больше входных данных
  • проанализировать файл журнала, который принимает аргумент (время выполнения тестов)
  • команда telnet с пользовательской продолжительностью тайм-аута
  • Пауза (с чтением или аналогичным) в xargs
  • Выполнение арифметики с плавающей запятой в определениях переменных сценария оболочки
  • Как получить абсолютный путь от использования команды find unix
  • Динамически присваивать массив значению переменной. Eval?
  • Перенаправление вывода сценария на удаленный сервер через scp или ssh
  • Mass .flac -> .mp3 transcoding: Как написать сценарий оболочки, который сохраняет информацию тега ID3?
  • bash эквивалент zsh $ @
  • Как выбрать количество цифр в переменной в моих сценариях?
  • Linux и Unix - лучшая ОС в мире.