打印行包含最大值和最小值

打印行包含最大值和最小值

我需要读取文件(包含 16K 行)并打印整行,如果任何列和所有列包含最大值(100)并且所有列包含最小值(0)。给出了输出示例

input.txt(制表符分隔)

Id sno1 sno2 sno3 sno4
E1 98   100  88   78
E2 33   99   78   66
E3 0     0   100  56
E4 0     0    0    0
E5 45   55   65   100
E6 0     0   99    88
E7 100 100  100   100

输出.txt

E1 98  100  88   78
E3 0    0   100   56
E4 0    0    0    0
E5 45   55   65   100
E7 100  100  100  100

答案1

像这样的东西[更新]?

perl -n -e 'if (/^\S+\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)/) { print if $1==100||$2==100||$3==100||$4==100||($1==0&&$2==0&&$3==0&&$4==0) }' input.txt

也适用于空间分隔的列。

答案2

也可以在以下位置完成awk

awk '$2 ~ /^0$/ && $3 ~ /^0$/ && $4 ~ /^0$/ && $5 ~ /^0$/ || /100/' $file

相关内容