
~/dictwords.txt
ファイル で見つかった単語の数を含む というファイルを作成しようとしています/usr/share/dict/words
。
すでにファイルを作成していましたが、間違って echo コマンドを実行したため削除しました。その後、このコマンドを試してみたところ、正しいと思ったのでとても興奮しました。
wc -w /usr/share/dict/words > ~/dictwords.txt
まだ間違っています。ファイル名なしで番号だけを指定する必要があります。
答え1
デフォルトでは、wc
ファイル名とともに結果が出力されます。結果のみが必要な場合は、wc
stdin から入力を読み取る必要があります。
</usr/share/dict/words wc -w > ~/dicwords.txt
wc
現在のソリューションでは、、、などの他のツールを使用してcut
、からの結果のみを取得できますawk
。grep
wc -w /usr/share/dict/words | cut -d' ' -f1 > ~/dicwords.txt
wc
ただし、これは数字の前にスペース文字を追加しない実装を前提としていますが、すべてのwc
実装がそうであるとは限りません。
答え2
スクリプト内で単語数を使用する必要がある場合は、値を変数に保存できます。
numWords=$(wc -w /usr/share/dict/words | tr -dc '0-9')
それ以外の場合は、ファイルに保存できます。
wc -w /usr/share/dict/words | tr -dc '0-9' > ~/dicwords.txt
答え3
ファイルには/usr/share/dict/words
1 行につき 1 つの単語が含まれている必要があります。一部のシステムでは、1 行につき 1 つの「辞書用語」が含まれていて、それぞれがスペースで区切られた複数の単語で構成されている可能性があると思いますが、私はこれを見たことがありません。
行数を取得するには、次のいずれかを使用します。
wc -l </usr/share/dict/words
(ファイル内の改行の数を数えます)sed -n '$=' /usr/share/dict/words
(最後の行に現在の行番号を出力します)awk 'END { print NR }' /usr/share/dict/words
(入力終了時に読み込んだレコード数(行数)を出力します)grep -c '[^[:space:]]' /usr/share/dict/words
(少なくとも 1 つの非スペース文字を含む行の数を数えます)
これらのうち、wc -l
バリエーションは実際の数字の前や後に余分なスペースを出力する場合と出力しない場合があるため、移植性が最も低くなります。
答え4
cat
ここでは、結果の後にファイル名が印刷されないようにする を 使用した解決策を示します。
cat /usr/share/dict/words | wc -w