Команда в вопросе (sed -n "/am/,/sed/p"
, обратите внимание на добавленную косую черту) означает:
- Найти строку , содержащую строку
am
- и печатать (
p
), пока не появится строка, содержащая sed
Поэтому она печатает:
I am using basic grep expression
, поскольку она содержит am
.Если вы добавите еще несколько строк, они также будут напечатаны, пока не появится строка, содержащая sed
.
Например:
echo -e 'I am using basic grep expression.\nOne more line\nOne with sed\nOne without' | sed -n "/am/,/sed/p"
приведет к:
I am using basic grep expression.
One more line
One with sed
Я думаю, что вы хотите сделать что-то вроде этого:
sed -n "s/.*\(am.*sed\).*/\1/p"
Пример:
echo 'I am using basic grep expression.' | sed -n "s/.*\(am.*sed\).*/\1/p"
echo 'I am using basic sed expression.' | sed -n "s/.*\(am.*sed\).*/\1/p"
sed -n "s/.*\(am.*sed\).*/\1/p"