Не уверен, что это вас устраивает, но если речь идет о выделении строк из потока текста, sed
всегда должен вас отсортировать. Проверьте примеры ниже:
Я хочу вывести только те строки, которые не соответствуют определенному регулярному выражению (регулярное выражение) - в этом примере опустите все строки, содержащие слово "pipe".
$> echo -e "this is a line\nthat is a line\nthis is a piped line\nthat is a line in a pipe" | sed '/pipe/d'
this is a line
that is a line
В следующем выводите только те строки, которые содержат слово "труба"
$> echo -e "this is a line\nthat is a line\nthis is a piped line\nthat is a line in a pipe" | sed '/pipe/!d'
this is a piped line
that is a line in a pipe
В качестве альтернативы выведите только 2-ю и 3-ю строки:
$> echo -e "this is a line\nthat is a line\nthis is a piped line\nthat is a line in a pipe" | sed -n '2,3p'
that is a line
this is a piped line
И еще много примеров и возможностей ... Проверьте sed1line
Определенно, есть много более способных альтернатив, awk
, perl
и т.д.