大きなテーブルの各フィールドに存在する要素/単語の数を数えようとしています。フィールドは空白で区切られ、フィールド要素(「単語」)はコンマで区切られます。テーブルはまた、空のフィールド(例えば、2つ以上の連続した空白)を含み、これは0個の要素に等しい。awk、出力テーブルの各フィールドの値の数のカウント
val1 3 3 0 1
val2 0 2 1 1
val3 0 0 0 2
(Iは、第1の列を保持したい)
:val1 this,is,text this,more,text stop
val2 this,is a field
val3 end,text
これは、所望の出力のようになります。このようなテーブルから例えば
、
最初の行にstop
の値の前に2つの空白があり、4番目のフィールドに0個の要素があることを示します。他の行でも同様のことが起こります。
私は、各フィールドの要素の希望数を持つ配列を作成するためのawkの分割機能を使用してきた:
awk '{ for(i = 2; i <= NF; i++) {
$i=split($i,a,",") ; { if (!$i) { $i="0" }};
}; print $0}' input
私はn
要素の配列a
に、各フィールドi
を分割しています、この値を変数$i
に割り当てます。与えられたフィールドの要素が0の場合、(!$i
)、$i=0
。
しかし、これは私の現在、不要な出力です:
val1 3 3 1
val2 2 1 1
val3 2
あなたが見ることができるように、0の値が省略されています。空のフィールドに0の値を代入することには問題があると思います。
誰でも手伝ってもらえますか?ありがとうございます!
おはようございます。とても簡単。どうもありがとう! – XGrau