スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

GNUとUNIXコマンド(3)

1.以下のような2つのファイルがある。

 $ cat A.txt
 1 REDHAT
 2 TURBO
 3 VINE
 4 PLAMO

 $ cat a.txt
 1 redhat
 2 turbo
 3 vine
 4 plamo

これを以下のように結合して、1つのファイルjoin.txtにしたい。

 $ cat join.txt
 1 REDHAT redhat
 2 TURBO turbo
 3 VINE vine
 4 PLAMO plamo

必要なオプション、引数をつけて、コマンドを記述せよ。

正解:join -j 1 A.txt a.txt > join.txt

「-j 1」で両方のファイルの最初のフィールドで結合します。ちなみにこの場合、オプションなしで「join A.txt a.txt」としても同じ結果になります。


2.テキスト・ファイル内の列を対象に、矩形表示/非表示を行うコマンドを選択しなさい。

1. cut
2. expand
3. col
4. tac
5. nl

正解:1.cut

cutコマンドはテキスト・ファイルの各行から所望の部分だけを抜き出すためのコマンドです。たとえば、各行の要素がタブで区切られているとき、cutコマンドを使えば所望の列だけを抜き出して表示できます。


3.chat.log ファイルのすべての行頭に "> " (引用符) を付けて表示したい。
元ファイル:abcdefg
表示   :> abcdefg
以下のどのコマンドの組合せを実行すればよいか?

1.cat chat.log > sed s/^/'> '/
2.sed 's/^/'> '/ < cat chat.log
3.cat chat.log | sed s/^/'> '/
4.cat chat.log > sed "s/^/'> '/g"
5.sed -f chat.log -e s/^/"> "/
6.sed -e s/^/'> '/g < chat.log

正解: 3 , 6

1. は、「>」ではなくて「|」(パイプ) ならばOK。
2. は、「'」の数があってない時点で×。
sed s/^/'> '/ < chat.log ならOK。
4. は、「>」を「|」に変えても、「"」のせいで sed の出力に「'」も入ってしまいます。
5. は、-f オプションの使い方がそもそも間違ってます。-f オプションは、sed のスクリプトを読み込むファイルを指定します。
ちなみに、sed s/^/'> '/ chat.log も同じ動作をします。


4.ファイルsampleには、内容が重複している行が多数存在している。重複している行を1行にまとめて表示するにはどうすればよいか?下線部に適切なコマンドを記述せよ。

$ sort sample | _________

正解:uniq

uniqコマンドは重複行をまとめて表示します。ただし、あらかじめソートしておく必要があります。


5./var/log/messages ファイルの先頭20行を表示するコマンドはどれか。正しいものを全て選択せよ。

1.head -20 /var/log/messages
2.head +20 /var/log/messages
3.head -n 20 /var/log/messages
4.tail -20 /var/log/messages
5.tail +20 /var/log/messages

正解: 1 , 3

2.head には + というオプションはありません。
4.tail -20 は、ファイルの末尾から20行を表示します。
5.tail +20 は、ファイルの20行目以降を表示します。


6.テキスト・ファイル「file1」に存在する大文字アルファベットをすべて小文字アルファベットに変更したい。そのための方法として適切なものを選択しなさい。

1. nl [a-z] [A-Z] < file1
2. tac [A-Z] [a-z] > file1
3. expand [a-z] [A-Z] | fle1
4. tr [A-Z] [a-z] < file1
5. sed --lower [A-Z] < file1

正解:4.tr [A-Z] [a-z] < file1

nlコマンドはテキスト・ファイルに行番号をつけて表示するためのプログラムです。
tacコマンドはテキスト・ファイルの内容を逆順に表示するためのプログラムです(catコマンドと逆の機能)。
expandコマンドはテキスト・ファイル内のタブ文字をスペース文字に変換するためのプログラムです。
選択肢の中で、テキスト・ファイル内の文字を別の文字に置換できるのはtrコマンドとsedコマンドです。このうち、テキスト・ファイル内の大文字をすべて小文字に置換するためにはtrコマンドを利用します。なお、sedコマンドに「--lower」というオプションは存在しません。


7.テキストファイルfile.txt内にある文字列「abc」をすべて「def」に変更して表示するためには、どのコマンドを実行すればよいか?

1.sed c/abc/def/s file.txt
2.grep -v -s /abc/def file.txt
3.cat file.txt | grep abc | grep def
4.sed s/abc/def/g file.txt
5.fmt abc def < file.txt

正解:4

書式:sed s/str1/str2/g file
で、str1をstr2に変更して表示します。
最後のgをつけなかった場合は、1行に複数のstr1があった場合、最初のstr1だけがstr2に変更されます。


8.バイナリファイルの内容を8進数や16進数で表示するコマンドはどれか?

1.mon
2.hexdump
3.bin
4.od
5.ed

正解:2.4

9.複数の受信メールをまとめたファイル「mailfile」の中から、発信者のメールアドレスを表示したい場合、どのようにすればよいか? なお、発信者のメールアドレスは「From:」以下に記されているものとし、「From:」を除いて表示したい。

1.grep mailfile '^From' | cut -d: -f1
2.grep '^From' mailfile | cut -d: -f2
3.grep '$From' mailfile | cut -d':'
4.grep mailfile "From" | cut -d: -f2

正解:2

まず「行頭が"From"」を正規表現で表すと「^From」となります。この結果ではFrom行がそのまま出てきますから、cut コマンドを使って2番目のフィールド(つまりメールアドレス部分)を抽出しています。
※ ただし実際には、メールアドレス以外の部分も含まれてしまいますので、あまり実用的ではありません


10.下記は、/etc/passwd の一部である。

root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:
daemon:x:2:2:daemon:/sbin:
adm:x:3:4:adm:/var/adm:

これを加工して、ログイン名とホームディレクトリのみ表示するには、以下のどれを実行すればよいか?

1.cut -f1,6 /etc/passwd
2.cut -f 1,6 /etc/passwd
3./etc/passwd > cut -f1,6 -d:
4.cut -d: -f1,6 /etc/passwd
5.cut -d: -f 1,6 < /etc/passwd

正解: 4 , 5

-f オプションで取り出すフィールドを指定します。
-d オプションでフィールドを区切るデリミタを指定します。(デフォルトのデリミタは TAB です)
-f, -d オプションの次は、スペースを入れても入れなくてもOKです。
この問題では、':' を区切りとして指定し、1番目と6番目のフィールドのみ抜き出しています。
なお、選択肢 4. は引数としてファイルを指定しているのに対し、選択肢 5. ではリダイレクトを使っています。

スポンサーサイト

テーマ : UNIX/Linux
ジャンル : コンピュータ

コメントの投稿

非公開コメント

スカウター
プロフィール

Author:うにえる
個人的メモ

検索フォーム
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。