以下を含む「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 つの高数 (これ以上はありません) の正確な数を取得します。