逐行读取awk和if

时间:2013-10-02 12:12:09

标签: linux bash shell

我有一个名为contenido.txt的文件 该文件位于下一个表格中

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的行的打印

你可以帮我吗?

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

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

2 个答案:

答案 0 :(得分:2)

在阅读完代码后,您所指的column 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

并且代码的第二部分似乎是提取第一列(名称?)。您可以使用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

答案 1 :(得分:1)

在awk中,

column2$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}是隐含行为。