値が 5 未満の列数を行単位で計算する必要があります。私のデータは次のとおりです。
1.2 8.9 4.5 2.8
4.9 10.1 15.3 1.1
2.1 4.3 3.9 3.3
.
.
したがって、希望の出力は次のようになります。
3
2
4
ベストアンサー1
レコードあたりのフィールド数(デフォルトでは行ごとにスペースで区切られた列)はですNF
。ループを使用して、レコード内のすべてのフィールドを繰り返すことができますfor (i = 1; i <= NF; ++i)
。フィールドのデータはループ内で使用できますi
。$i
たとえば、
awk '{ count = 0; for (i = 1; i <= NF; ++i) if ($i < 5) ++count; print count }'
またはもう少し詳しく書いて、
awk '
{
count = 0
for (i = 1; i <= NF; ++i)
if ($i < 5)
++count
print count
}'
if
andステートメントの本文for
は単にステートメントであるため、追加の改行文字は必要ありません{ ... }
(Cプログラミング言語と似ていますが、Perlとは異なります)。同じ行であるステートメントを別のステートメントから切り離したくない限り、行末は必要ありません(たとえば、;
上記の2つの同等のコードスニペットの使用法の比較)。;