最大値と最小値を含む行を印刷します。

最大値と最小値を含む行を印刷します。

ファイル(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

関連情報