LinuCレベル1 101試験の例題と解説
主題1.03GNUとUnixのコマンド
1.03.2フィルタを使ったテキストストリームの処理
LinuCレベル1 101試験の出題範囲から「1.03.2 フィルタを使ったテキストストリームの処理」についての例題を解いてみます。
例題
次の内容を持つファイル users.txt があります。
alice:1001
bob:1002
charlie:1003このファイルから「ユーザー名(コロンより前の部分)」だけを取り出して表示したい場合、実行するべき適切なコマンドはどれでしょうか。
- cut -d : -f 1 users.txt
- cut -c 1 users.txt
- head -n 1 users.txt
- sed -n 2p users.txt
※この例題は実際の試験問題とは異なります。
解答と解説
正解は、「1. cut -d : -f 1 users.txt」です。
cut は、区切り文字や文字位置を指定して特定の列(フィールド)を抽出するためのフィルタコマンドです。
- 「 -d : 」→ 区切り文字としてコロン(:)を指定
- 「 -f 1 」→ 1 番目のフィールド(コロンより前の部分)を出力
実行結果は次のようになります。
alice
bob
charlie各選択肢の解説は以下のとおりです。
2. cut -c 1 users.txt
誤りです。
「 -c 1 」は各行の1文字目のみを出力します。ユーザー名全体を取得することはできません。
実行結果は次のようになります。
a
b
c3. head -n 1 users.txt
誤りです。
head は、ファイルや標準入力の先頭部分を表示するためのフィルタコマンドです。「 -n 1 」 は先頭の1行のみを表示する指定であり、フィールド(コロンより前の部分)を抽出することはできません。
実行結果は次のようになります。
alice:10014. sed -n 2p users.txt
誤りです。
sed は、入力を行単位で処理し、文字列の置換・削除・抽出などを行うためのストリームエディタコマンドです。「 -n 2p 」は2行目のみを表示する指定であり、フィールド抽出とは無関係です。
実行結果は次のようになります。
bob:1002cut コマンドについて補足します。
試験範囲では GNU textutils と表記されることがありますが、現在の多くの Linux 環境では coreutils に統合されています。ただし、コマンドの使い方自体は変わっていません。
例題作成者
株式会社デージーネット 経営企画室 朱龍一