問題ID:22553について
- フォーラムは新サイトへ移行しました。
- このフォーラムではゲスト投稿が禁止されています
問題ID:22553について
msg# 1
A_Kato
投稿数: 2
問題ID:22553のついて教えていただけないでしょうか?
問題文の「大文字アルファベットを含まない行」という記述より
grep -v '[A-Z]' test.txt
が正解となるのは理解できるのですが、同時に選択肢として出てくる
grep '[^A-Z]' test.txt → [A-Z]の範囲の否定(^)
でも同じ動作になる(正答)となるような気がしているのですが、
両者の違いはあるのでしょうか?
(「含まない」という意図を汲み取って-vオプションを使用している方が正解ということでしょうか?)
解説文の「大文字アルファベット以外の文字(小文字アルファベットなど)を含む行を表示しますので、誤りです。」という記述がいまいちピンとこずにいます。
よろしくお願い致します。
問題文の「大文字アルファベットを含まない行」という記述より
grep -v '[A-Z]' test.txt
が正解となるのは理解できるのですが、同時に選択肢として出てくる
grep '[^A-Z]' test.txt → [A-Z]の範囲の否定(^)
でも同じ動作になる(正答)となるような気がしているのですが、
両者の違いはあるのでしょうか?
(「含まない」という意図を汲み取って-vオプションを使用している方が正解ということでしょうか?)
解説文の「大文字アルファベット以外の文字(小文字アルファベットなど)を含む行を表示しますので、誤りです。」という記述がいまいちピンとこずにいます。
よろしくお願い致します。
Re: 問題ID:22553について
msg# 1.1
arashi1977
居住地: 広島
投稿数: 1715
引用:ちょっと実行例を確認してみましょう。設問の通りのファイルを用意しました。
おっしゃってる '[^A-Z]' で検索すると以下の結果になります。大文字のみの行がなくなっています。
より正しく言うと「大文字以外の文字にマッチする=大文字のみの行にはマッチしない」ということです。
こっちが正答のもので、大文字アルファベットを含む行がなくなっています。
-vオプションによって「大文字がマッチしたものを除く」ということですね。
というのでどうでしょうか?
解説文の「大文字アルファベット以外の文字(小文字アルファベットなど)を含む行を表示しますので、誤りです。」という記述がいまいちピンとこずにいます。
$ cat test.txt
NAME
grep, egrep, fgrep - print lines matching a pattern
SYNOPSIS
grep [options] PATTERN [FILE...]
grep [options] [-e PATTERN | -f FILE] [FILE...]
より正しく言うと「大文字以外の文字にマッチする=大文字のみの行にはマッチしない」ということです。
$ grep '[^A-Z]' test.txt
grep, egrep, fgrep - print lines matching a pattern
grep [options] PATTERN [FILE...] ←大文字が含まれている
grep [options] [-e PATTERN | -f FILE] [FILE...] ←大文字が含まれている
-vオプションによって「大文字がマッチしたものを除く」ということですね。
$ grep -v '[A-Z]' test.txt
grep, egrep, fgrep - print lines matching a pattern ←大文字が一つも含まれていない
Re: 問題ID:22553について
msg# 1.2
A_Kato
投稿数: 2
arashi1977さん
ご回答頂きありがとうございました。
(実行例まで付けていただき、非常に理解の助けになりました)
grep '[^A-Z]' test.txt
→「大文字では無い文字が含まれている行」(大文字以外の文字が行内にあると、その文字がマッチしてしまい、大文字が含まれているにも関わらず表示されるので今回の題意に合わないのでNG)
grep -v '[A-Z]' test.txt
→「『大文字が含まれている行』の否定(-vオプション)」(今回の題意に合う内容でOK)
ということですね。
無事解決・理解することが出来ました。
ありがとうございました。
ご回答頂きありがとうございました。
(実行例まで付けていただき、非常に理解の助けになりました)
grep '[^A-Z]' test.txt
→「大文字では無い文字が含まれている行」(大文字以外の文字が行内にあると、その文字がマッチしてしまい、大文字が含まれているにも関わらず表示されるので今回の題意に合わないのでNG)
grep -v '[A-Z]' test.txt
→「『大文字が含まれている行』の否定(-vオプション)」(今回の題意に合う内容でOK)
ということですね。
無事解決・理解することが出来ました。
ありがとうございました。