LPIC-1 Exam 101 無料問題 5 / 10 ・ 分野3: GNU and Unix Commands
users.txt に次の1行がある。cut -d: -f6,1 users.txt の出力として正しいのはどれか。 aki:x:1001:1001:Aki Sato:/home/aki:/bin/bash
- /home/aki:aki
- aki:/home/aki
- /home/aki aki
- aki /home/aki
正解と解説を見る
正解: B
正解の理由
cut の -f は取り出すフィールドの番号を、-d はフィールドの区切りの文字を指定する。取り出したものは、指定した番号の並びに関係なく、入力の中に現れた順に1回ずつ出る。そのため -f6,1 と書いても第1フィールド aki が先、第6フィールド /home/aki が後になる。出力の区切りは、指定しなければ入力の区切りと同じ : になる。
違う選択肢
「aki /home/aki」… 出る順は合っているが、出力の区切りは入力と同じ : のまま。空白で区切って出したいときは --output-delimiter で指定する。
「/home/aki:aki」… -f に並べた番号の順に出ると考えた結果。cut は入力を読んだ順で出すので、番号を逆に書いても順は入れ替わらない。
「/home/aki aki」… 出る順も区切りも違う。並べ替えたいときは cut ではなく、awk など順を指定できる道具を使う。
押さえどころ
-f の番号は1から数える(0番は無い)。範囲は 1-3 や 6- のように書け、1,6 のようにカンマで並べてもよい。区切りの文字を含まない行は、-s を付けない限りそのまま出てしまうので、見出しや空行の混じるファイルでは気をつける。