it-swarm-eu.dev

Jak ukázat čáry po každém shluku grepů až do jiné konkrétní shody?

Vím, že pomocí "-A NUM" přepínač Po každém zápase mohu vytisknout určitý počet koncových řádků. Jen mě zajímá, jestli je možné tisknout koncové řádky, dokud se po každém zápase nenajde konkrétní slovo. např. Když hledám slovo „A“, chci vidět řádek obsahující slovo „A“ a také řádky za ním, dokud nebude obsahovat slovo „slovo D“.

kontext:

Word A
Word B
Word C
Word D
Word E
Word F

příkaz:

grep -A10 'Word A'

Potřebuji tento výstup:

Word A
Word B
Word C
Word D
51
Meysam

Zdá se, že chcete tisknout řádky mezi 'Word A' a 'Word D '(včetně). Navrhuji, abyste místo sed použili grep. Umožňuje upravit rozsah vstupního proudu, který začíná a končí požadovanými vzory. Měli byste jen říct sed, aby tiskli všechny řádky v dosahu a žádné další řádky:

sed -n -e '/Word A/,/Word D/ p' file
81
saeedn

proč nepoužívat awk?

awk '/Word A/,/Word D/' filename
18
cesar
Perl -lne 'print if /Word A/ .. /Word D/' file

nebo

cat file | Perl -lne 'print if /Word A/ .. /Word D/'
9
vinian