Вы не можете сопоставить символы новой строки с \ n
(или чем-либо еще, что вы пробовали) в sed
, поскольку sed
работает построчно, поэтому новые строки как вы думаете, что они не входят в сферу его работы. Вам нужен специальный оператор $
, соответствующий концу строки:
sed -e '/0$/d'
Если вы не хотите также удалять строки, например, заканчивающиеся на WLNY-10
, то вам нужно быть более конкретным, чем даже / 0 $ /
, например
sed -r '/\s0$/d' file
или, если GNU sed недоступен
sed '/[[:space:]]0$/d' file
или даже
awk '$NF!=0' file
Для удаления строк, содержащих 0
в последнем столбце, попробуйте:
$ sed '/0$/d' file
591000000 85 85 2 2 CDL (control)
321000000 40 40 109 4.2 COZI-TV
585000000 84 84 8 8 NJTV
585000000 84 84 8134 10 WTBY
585000000 84 84 62 12 N12WC
657000000 101 101 1014 14 OPTCH
Ваши решения терпят неудачу, потому что:
sed "/ 0 / d"
: / 0 /
означает, что строка соответствия содержит 0
в любой позиции, поэтому она удалит все ваши входные строки.
sed "/ 0 / d"
: / 0 /
означает, что строка соответствия содержит 0
до и после пробела. Он ничего не сделает, потому что ваш ввод не совпадает.
sed "/ \ t0 \ n / d"
и sed "/ 0 \ n / d"
также не совпадают, потому что вы использовали неправильное регулярное выражение.
Заключение, для совпадения 0
в последнем столбце необходимо использовать / 0 $ /
. Вы должны прочитать man sed
или любые статьи о регулярном выражении
для получения более подробной информации.
Обновлено
Согласно ответу @ steeldriver, я обновляю свой ответ, чтобы сохранить строки, содержащие число, заканчивающееся на 0
:
$ sed '/ 0$/d' cat
591000000 85 85 2 2 CDL (control)
321000000 40 40 109 4.2 COZI-TV
585000000 84 84 8 8 NJTV
585000000 84 84 8134 10 WTBY
543000000 77 77 710 10.1 WLNY-10
585000000 84 84 62 12 N12WC
657000000 101 101 1014 14 OPTCH
Другая команда awk
,
$ awk '$NF==0 {next;}1' file
591000000 85 85 2 2 CDL (control)
321000000 40 40 109 4.2 COZI-TV
585000000 84 84 8 8 NJTV
585000000 84 84 8134 10 WTBY
543000000 77 77 710 10.1 WLNY-10
585000000 84 84 62 12 N12WC
657000000 101 101 1014 14 OPTCH