2013-02-21 2 views
-1

Без сценария оболочки в одной строке. Какая команда может помочь вам вырезать из строки на основе значения столбцаРежущий элемент в Unix на основе значения столбца

Например:

В

118 Balboni,Steve 23 
11 Baker,Doug 0 
120 Armas,Tony 13 
133 Allanson,Andy 5 
158 Baines,Harold 13 
33 Bando,Chris 1 
44 Adduci,James 1 
50 Aguayo,Luis 3 
5 Allen,Rod 0 
94 Anderson,Brady 1 

ЕСЛИ третий ряд не равно нулю, как удалить строку целиком в одном заявление? Возможно ли это в unix?

+1

3-й ряд? Или вы имеете в виду третью колонку? Сколько способов вы хотите сделать? 'awk',' sed', 'perl',' python' могли бы сделать это с легкостью (некоторые немного легче, чем другие). –

ответ

1

Предполагая, что вопрос действительно спрашивают о «если третий столбец не равен нулю, не печатать» или (что то же самое) «только напечатать строку, если третий столбец 0»:

Использование awk :

awk '$3 == 0' data 

(.. Если третий столбец равен нулю, печать на вход, в противном случае, игнорировать его можно добавить { print } после 0 сделать действие явным)

Использование perl:

perl -nae 'print if $F[2] == 0' data 

Использование sed:

sed -n '/ 0$/p' data 
0

Это делает INPLACE замену.

perl -i -F -pane 'undef $_ if($F[2]!=0)' your_file 

испытания:

> cat temp 
118 Balboni,Steve 23 
11 Baker,Doug 0 
120 Armas,Tony 13 
133 Allanson,Andy 5 
158 Baines,Harold 13 
33 Bando,Chris 1 
44 Adduci,James 1 
50 Aguayo,Luis 3 
5 Allen,Rod 0 
94 Anderson,Brady 1 
> 
> 
> perl -i -F -pane 'undef $_ if($F[2]!=0)' temp 
> cat temp 
11 Baker,Doug 0 
5 Allen,Rod 0 
> 
0

Если вы хотите печатать строки, которые не имеют третьего столбца, а также те, в которых третий столбец является явно 0 (то есть, если вы считаете, пустое поле будет ноль), попробуйте:

awk '!$3' 

Если вы не хотите печатать строки с только 2 колонок, попробуйте:

awk 'NF>2 && !$3' 
Смежные вопросы