2013-10-02 3 views
1

У меня есть файл под названием contenido.txt файла не будет в следующей таблицесчитанная строка за строкой AWK и если

Nombre column1 column2 valor3 
Marcos 1  0  0 
Jose  1  0  0 
Andres 0  0  0 
Oscar  1  0  0 
Pablo  0  0  0 

мне нужен конечный файл или печать линий, имеет только 0 в column2

Не могли бы вы помочь мне, пожалуйста?

cat contenido.txt | while read LINE; do 
var=$(cat $LINE | awk '{print $2}') 

if ["$var" == 0] 
then 
echo $LINE | awk '{print $1}' 
fi 
done 
+0

Вам нужно использовать awk для этого? Я бы сказал, что grep достаточно ... – Danstahr

+0

fedorqui. только второй столбец, то есть column1. – maqritos

+0

danstahr, вы можете помочь мне использовать только grep? – maqritos

ответ

2

После прочтения ваших кодов, вы имели в виду 2-й столбец (столбец с заголовком «column1»), это не столбец с заголовком «column2». Так эта линия поможет вам:

awk 'NR==1{print;next}$2==0' file 

тест с данными

kent$ echo "Nombre column1 column2 valor3 
Marcos 1  0  0 
Jose  1  0  0 
Andres 0  0  0 
Oscar  1  0  0 
Pablo  0  0  0"|awk 'NR==1{print;next}$2==0' 
Nombre column1 column2 valor3 
Andres 0  0  0 
Pablo  0  0  0 

и 2-й части ваших кодов, кажется, что извлекая первый столбец (имена?) Из. Вы можете сделать это одним выстрелом с помощью awk (игнорировать заголовок):

kent$ echo "Nombre column1 column2 valor3 
Marcos 1  0  0 
Jose  1  0  0 
Andres 0  0  0 
Oscar  1  0  0 
Pablo  0  0  0"|awk '$2==0{print $1}'  
Andres 
Pablo 
+0

-.-.-.-.-.-. – maqritos

+0

привет, Кент, не могли бы вы дать мне всю структуру предложения. Я не знаю, где мне нужно поставить | awk 'NR == 1 {print; next} $ 2 == 0', я буду очень благодарен. – maqritos

+1

@ user2838528 step1, удалите все свои коды, step2: поместите эту строку в свой скрипт (если у вас должен быть файл сценария): 'awk 'NR == 1 {print; next} $ 2 == 0' contenido.txt' он будет печатать целые строки, если вы хотите только имя, как 2-я часть в моем ответе, вы просто делаете 'awk '$ 2 == 0 {print $ 1}' contenido.txt'. – Kent

1

column2 в AWK $3. Таким образом:

$ awk '$3 == 0' < in.txt 
Marcos 1  0  0 
Jose  1  0  0 
Andres 0  0  0 
Oscar  1  0  0 
Pablo  0  0  0 

{print $0} - неявное действие.

+1

Нет необходимости в '' file ', 'awk' command 'file' более чем достаточно. Кроме того, чтобы проверить, является ли 3-ое поле пустым или нет, этого будет достаточно 'awk '! $ 3' file'. – fedorqui

+0

Мне нравится думать в трубах, поэтому я использую '<'. Я не вижу, что OP хочет проверить на пустое. –

+0

Mispelled, 'empty' ->' 0'. – fedorqui

Смежные вопросы