過去問ドリル

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

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

Windowsで作成されたテキストファイル data.txt の行末に、改行(LF)の前にCR(復帰)が含まれているかを確かめたい。制御文字を \r や \n のような目に見える形で1バイトずつ表示するコマンドとして適切なものはどれか。

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

正解:A

解説

od はファイルの内容を8進数・16進数・文字などの形式でダンプするコマンドです。-c オプションを付けると各バイトを文字として表示し、印字できない制御文字はCRなら \r、LFなら \n、タブなら \t のようにエスケープ表記で示します。Windowsで作成したテキストでは行末が \r \n と表示されるので、CRの有無をひと目で確認できます。左端の数値はファイル先頭からのオフセット(既定では8進数)です。

選択肢ごとの解説

  • A正しい。od -c は各バイトを文字として表示し、CRを \r、LFを \n のように見える形で示します。
  • B誤り。nl はファイルの各行に行番号を付けて出力するコマンドで、行末のCRのような制御文字を見える形にはしません。
  • C誤り。expand はタブを適切な数の空白に変換して出力するコマンドで、CRを表示する機能はありません。
  • D誤り。fmt は段落の行を指定した幅に収まるよう整形し直すコマンドで、制御文字を可視化するものではありません。
LinuCレベル1の問題を演習モードで解く