問題ID3706がわかりません
- フォーラムは新サイトへ移行しました。
- このフォーラムではゲスト投稿が禁止されています
問題ID3706がわかりません
msg# 1
Pnt353_180
投稿数: 2
journalctlコマンドの出力結果を保存した「system.log」ファイルがあり、全ての行に「hh:mm:ss」形式で時刻が記録されている。17時台の行を抽出できるコマンドは次のうちどれか。(2つ選択)
選択肢
grep -E '17:[0-9]?:[0-9]?' system.log
grep -E '17:[0-5][0-9]:[0-5][0-9]' system.log
grep -E '17:00|59' system.log
grep -E '17:[0-9]+:[0-9]+' system.log
grep -E '17:[0-59]:[0-59]' system.log
回答
grep -E '17:[0-5][0-9]:[0-5][0-9]' system.log
grep -E '17:[0-9]+:[0-9]+' system.log
一つ目が正解なのは分かるのですが、二つ目がなぜ正解なのか分かりません。
+は直前の文字の1回以上の繰り返しなので、二つ目の選択肢だと、例えば17:11:22や17:55:44のようなログ(10の位と1の位がゾロ目のログ)しか抽出されないのではないかと思っているのですがどうでしょうか?
17:46:25のようなログ(10の位と1の位が違う数字のログ)も抽出されるのですか?
選択肢
grep -E '17:[0-9]?:[0-9]?' system.log
grep -E '17:[0-5][0-9]:[0-5][0-9]' system.log
grep -E '17:00|59' system.log
grep -E '17:[0-9]+:[0-9]+' system.log
grep -E '17:[0-59]:[0-59]' system.log
回答
grep -E '17:[0-5][0-9]:[0-5][0-9]' system.log
grep -E '17:[0-9]+:[0-9]+' system.log
一つ目が正解なのは分かるのですが、二つ目がなぜ正解なのか分かりません。
+は直前の文字の1回以上の繰り返しなので、二つ目の選択肢だと、例えば17:11:22や17:55:44のようなログ(10の位と1の位がゾロ目のログ)しか抽出されないのではないかと思っているのですがどうでしょうか?
17:46:25のようなログ(10の位と1の位が違う数字のログ)も抽出されるのですか?
Re: 問題ID3706がわかりません
msg# 1.1
tnishita2
投稿数: 123
抽出されます。[0-9]+ という正規表現で、+ が対象とする直前の文字というのは、1や2の具体的な文字ではなく、[0-9]を指します。「0〜9の任意の一文字」の「1回以上の繰り返し」という動作になります。
ちなみに、17:11:22のようなゾロ目の時刻だけ抽出したい場合、例えば文字を( )でキャプチャして、その文字を\1, \2, ...で参照します。
$ grep -E '17:([0-9])\1:([0-9])\2' system.log
ちなみに、17:11:22のようなゾロ目の時刻だけ抽出したい場合、例えば文字を( )でキャプチャして、その文字を\1, \2, ...で参照します。
$ grep -E '17:([0-9])\1:([0-9])\2' system.log