wc コマンドはテキストストリームの性質を数え、nl は入力へ生成した行番号を付けて書き出します。どちらもファイルまたは stdin を読み、結果を stdout へ送ります。
テキスト操作 · レッスン 15
wc と nl
wc で行、単語、バイト、文字を数え、nl で行番号を付ける方法を学びます。
wc の標準出力を読む
件数オプションなしの wc は、改行文字数、単語数、バイト数を表示し、ファイルを指定した場合はその名前を続けます。
$ printf 'red blue\ngreen\n' > colors.txt
$ wc colors.txt
2 3 15 colors.txt
左から、2 は行として報告される改行文字数、3 は空白区切りの単語数、15 はこの ASCII 例のバイト数です。wc -l が数えるのは見た目上の行ではなく改行文字なので、末尾に改行のない最後の行は数えられません。
wc file.txt の標準出力で、最初の 3 つの数値は何を表しますか?
1 つの件数を要求する
必要な測定だけを選べます。
-l:改行文字数。-w:単語数。-c:バイト数。-m:現在のロケールに従った文字数。
$ wc -w colors.txt
3 colors.txt
$ printf 'one two\n' | wc -w
2
ASCII ではバイト数と文字数は等しいですが、UTF-8 などのマルチバイト符号化では異なることがあります。ファイルオペランドなしで stdin を使うと、通常はファイル名ラベルが付きません。
essay.txt の単語数だけを報告するコマンドはどれですか?
現在のロケールで、バイトではなく文字を数えるよう wc に指示するオプションはどれですか?
複数ファイルを指定すると、wc はファイルごとの結果と total 行を表示します。GNU wc -L は入力行の最大表示幅を報告します。
nl で空でない行に番号を付ける
nl は標準で、入力の論理的な本文にある空でない行へ番号を付けます。notes.txt の 2 行目が空の場合を考えます。
alpha
beta
空行は保持されますが番号は付きません。
$ nl notes.txt
1 alpha
2 beta
nl は番号付き出力を書くだけで、notes.txt を変更しません。
nl notes.txt は標準で本文の空行をどう扱いますか?
すべての行に番号を付ける
-ba は、すべての行を番号付けする本文形式 a を選びます。
$ nl -ba notes.txt
1 alpha
2
3 beta
-w 3 は番号欄の幅、-s ': ' は番号後の区切りを変更します。
notes.txt の空行を含む本文全行へ番号を付けるコマンドはどれですか?
テキストの集計と番号付けを練習するには、次のラボを試してください。
- Linux wc コマンド:テキストの集計 -
wcで単語、行、文字を数えます。 - Linux nl コマンド:行番号付け -
nlでテキストファイルへ行番号を付けます。 - 単語数の集計と並べ替え -
wcと並べ替えを組み合わせて分析します。
レッスン完了
wc と nl を完了しました
元データを編集せず、テキストストリームを測定して見える行番号を付けられるようになりました。
wcの標準列である行、単語、バイトを解釈する。-l、-w、-c、-mで 1 つの件数を選ぶ。バイト数と文字数を区別する。
nlの標準動作で空でない行へ番号を付ける。nl -baで空行にも番号を付ける。