строка печати, начинающаяся с «F serve ..» в файле с несколькими выходными данными с помощью команды «sed» - PullRequest
0 голосов
/ 05 июня 2019

Я разработал скрипт, использующий sed для извлечения строк, начинающихся с текста F servedM.. из заданного файла мультилинии:

  • У меня есть файл input.txt из 100000 строк
  • Я хочу сгенерировать output.txt, содержащий все строки, начинающиеся с F servedMyd, и все строки, начинающиеся с F servedPuid.

Я использую ksh в Red Hat 7.4.

Ниже приведен код, который я пробовал.

#!/bin/ksh
input.txt=$1
while read line
do
sed "/^F servedMyd/p" $input.txt >> output.txt
sed "/^F servedPuid/p" $input.txt >> output.txt
done < $input.txt
exit 0

С этим кодом я не получил никакого вывода. Я ожидал иметь выходной файл со следующей структурой:

enter image description here

1 Ответ

0 голосов
/ 05 июня 2019

Скрипт не нужен, достаточно одной строки sed:

sed -n '/^F served\(My\|Pui\)d/p' foo > bar

Или grep:

grep '^F served\(My\|Pui\)d' foo > bar

Или:

grep -E '^F served(My|Pui)d' foo > bar
...