1

Может кто-нибудь, пожалуйста, объясните мне, почему делает следующую строку:

echo -e "ab\ncd" | sed "3,4 p"

выход продукции:

ab  
cd

Это потому, что линии 3 и 4 находятся вне диапазона ввода?

Я предпочел бы скорее пустой вывод, потому что вход имеет только две строки, в то время как команде было приказано исследовать строки с 3 по 4.

1 ответ1

2

Вы, кажется, предполагаете, что команда p команды sed будет печатать только строки из указанного диапазона. По умолчанию это не так.

Если вы не добавите параметр -n в sed , шаблон ввода будет напечатан, и в результате совпадающие строки будут продублированы.

Рассматривать:

echo -e "a\nb\nc\nd" | sed "3,4 p"

Дам тебе:

a
b
c
c
d
d

Поскольку в вашем примере нет строк 3-4, вы получите первые две строки в выводе.


Чтобы напечатать только строки из указанного диапазона:

echo -e "a\nb\nc\nd" | sed -n "3,4 p"
c
d

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .