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