1

我有一个名为 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

我需要一个最终文件或列 2 中只有 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
4

2 回答 2

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
于 2013-10-02T12:17:20.863 回答
1

column2$3awk 中。所以:

$ 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}是隐式动作。

于 2013-10-02T12:17:06.363 回答