1行の単語数を計算する方法

1行の単語数を計算する方法

以下を含む「shoplist.txt」というテキストファイルがあります。

drinks water cola fanta
fruit banana orange

各行にいくつの項目があるかどうかを知りたいです。 「カット」機能を使って飲み物や果物を抽出することができますが、一行に何単語があるのか​​どうか?

私の実際のコードは次のとおりです。

fileLine=`cat file.txt`
#Here I get each line saving it to fileLine
for line in $fileLine; do
 echo
((aux++))
done

ただし、このコードは毎回%fileLineに保存されるため、機能しません(飲み物、水、コーラなど)。

最初の行を取得してから、その行の単語数をどのように計算できますか?

答え1

可能であれば、awk現在のNF行のフィールド数(フィールドはデフォルトではスペースで区切られた単語です)。

使用

awk '{ print NF, $0 }' inputfile

あなたの入力例に基づいて、以下が印刷されます。

4 drinks water cola fanta
3 fruit banana orange

答え2

バッシュからwc

IFS=$'\n'
while read line; do
    wc -w <<< "$line"
done < file.txt

wcファイルの行数、単語数、バイト数を数えます。シェルループを使用すると、1行の単語数を数えることができます。

答え3

(単一)数字に関連しているため、少しコンテキストが異なる場合がありますが(同様ですが)、この非常に単純なawkルールは、ファイル内の各行の数字が4倍未満の行だけを維持するのに役立ちます。

awk -F [5,6,7,8,9] 'NF-1<4' IN > OUT 

'NF-1' 0、1、2、または 3 つの高数 (これ以上はありません) の正確な数を取得します。

関連情報