wc と nl
100%

テキスト操作 · レッスン 15

wc と nl

wc で行、単語、バイト、文字を数え、nl で行番号を付ける方法を学びます。

wc コマンドはテキストストリームの性質を数え、nl は入力へ生成した行番号を付けて書き出します。どちらもファイルまたは stdin を読み、結果を stdout へ送ります。

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 の空行を含む本文全行へ番号を付けるコマンドはどれですか?

レッスン完了

wc と nl を完了しました

元データを編集せず、テキストストリームを測定して見える行番号を付けられるようになりました。

  • wc の標準列である行、単語、バイトを解釈する。

  • -l-w-c-m で 1 つの件数を選ぶ。

  • バイト数と文字数を区別する。

  • nl の標準動作で空でない行へ番号を付ける。

  • nl -ba で空行にも番号を付ける。

学習進捗を保存

無料アカウントを作成してこのレッスンを保存し、どのデバイスからでも学習を続けられます。

無料アカウントを作成
次のレッスン
テキスト操作 に戻る