過去問ドリル

LinuCレベル1 GNUとUnixのコマンド 問37

GNUとUnixのコマンド/フィルタを使ったテキストストリームの処理

行数の多いファイル access.log に対して split -l 1000 access.log part_ を実行した。結果として適切なものはどれか。

当サイトのオリジナル問題(LinuCレベル1の出題範囲「GNUとUnixのコマンド」に対応。実際の試験問題ではありません)

正解:C

解説

split はファイルを複数の小さなファイルに分割するコマンドです。-l で1ファイルあたりの行数を指定し、最後の引数は出力ファイル名の接頭辞になります。接尾辞は既定では aa、ab、ac… のようなアルファベット2文字で、-d を付けると 00、01… の数字になります。バイト数で分けるには -b、ファイルの個数で分けるには -n を使います。元のファイルは変更されず、分割したファイルは cat part_* で連結すれば元に戻せます。

選択肢ごとの解説

  • A誤り。ファイルの個数を指定して分割するのは -n の働きです。-l 1000 は1ファイルあたりの行数の指定です。
  • B誤り。数字の接尾辞(00、01…)になるのは -d を付けた場合で、既定ではアルファベットの接尾辞です。
  • C正しい。1000行ごとに分割され、既定のアルファベット2文字の接尾辞が付いた part_aa、part_ab… が作られます。
  • D誤り。split は入力の全体を分割して書き出し、残りの行を捨てることはありません。先頭だけを取り出すのは head の用途です。
LinuCレベル1の問題を演習モードで解く