指定された行数の単語数を計算する方法は?

指定された行数の単語数を計算する方法は?

行数がコマンドライン引数として指定されたファイルから単語を数えるのに興味深い問題があります。たとえば、入力テキストファイルに次のものがある場合 -

Unix is an OS
Linux is the child of Unix
Unix is fun.
End of File

実行するコマンドは次のとおりです。

bash test.sh unix.txt 3

文を含むテストファイルはどこにunix.txtあり、3は単語数を数える行数です。答えは13です。

基本的なコマンドを試してみましたが、wcどちらも正解を提示しませんでした。

だから私はforループを試しましたが、これらの行番号だけを取得する方法を指定することはできません。

答え1

head -n 3 unix.txtファイルの最初の3行をインポートしてから、次にパイプすることができます。wc

したがって、シェル変数に格納されているファイル名の場合$file

{ head -n 3 | wc -w; } < "$file"

または:

head -n 3 -- "$file" | wc -w

後者は、-一部headの実装で呼び出されたファイルに対して機能せず、ファイルを開くことができないときにエラーメッセージ(を介して)と共に出力されます0headにあります。pipefail

答え2

また試み

awk -v"LNR=$2" 'NR > LNR {print SUM; exit} {SUM+=NF}' file
13

答え3

私たちはできますawk

awk '{print NF}' unix.txt

単語と行数

awk '{print NF" "$0}' unix.txt

行番号を含む単語数

awk '$0="line"NR": "NF'  unix.txt
awk '$0="line"NR": "NF'  unix.txt | grep line3

答え4

スクリプトには2つのパラメータがあります。

したがって、スクリプトでは次のように使用できます。

sed -n "/\w/{1,$2 p;}"  $1 | wc -w

$1ファイル名を含むファイルには、検索する$2必要がある行の総数が含まれています。

関連情報