ファイルの最初の n 行にある単語の合計数をカウントする Unix コマンドを記述しますか?

ファイルの最初の n 行にある単語の合計数をカウントする Unix コマンドを記述しますか?

最初の行の単語数を数えるにはどうすればいいでしょうか3?

入力:

There are many systems which are Unix-like in their architecture. 
Not able among these are the GNU/Linux distributions. 
The distinctions between Unix and Unix-like systems.
For distinctions between SUS branded UNIX architectures and other similar architectures, see Unix-like.

出力:28

答え1

awkワンライナーを使用する:

awk ' { gsub("[-/]"," ") } NR<4 { w+=NF };END { print w }' <filename>

答え2

$ head -n 3 file | tr -s '/ -' '\n\n\n' | wc -l
      28

このカウントは、28単語をスペース、ダッシュ、スラッシュで区切った場合に、指定されたテキストの最初の 3 行に対して取得されるカウントのようです。

-s上記のコマンドは、各スペース、ダッシュ、スラッシュを改行文字に置き換えて(および のオプションを使用して連続する複数の改行文字を削除して)、最初の 3 行を 1 行につき 1 つの単語に分割しtr、この分割によって生成された行の数をカウントします。

より自然な を使用するとhead -n 3 file | wc -w、単語が取得されます25。これは、が空白で区切られた単語のみをカウントし、と の両方を 1 つの単語としてwc -w扱うためです。Unix-LikeGNU/Linux

答え3

GNUgrepまたは互換バージョンの場合:

<myfile head -n 3 | grep -aEo '\w+' | wc -l

言葉その場合、1 つ以上の英数字またはアンダースコアのシーケンスになります。

答え4

head -n 4 myfile | wc -w

myfileは入力ファイル、4は最初の4行です

関連情報