メタキャラについて
- フォーラムは新サイトへ移行しました。
- このフォーラムではゲスト投稿が禁止されています
メタキャラについて
msg# 1
takaotu5
投稿数: 1
LPIC 101 問題ID: 22351
<問題>
「test.txt」ファイルから、「.*」という文字列を含む行を抽出したい。適切なコマンドは次のうちどれか
<疑問>
「egrep '.*' test.txt」という選択肢が不正解になってます。
理由は「-F」オプションがないからという理由ですが
シングルクウォーテで囲めばメタキャラは文字列として扱われるので
問題ないと思うのですが何が間違いなのでしょうか?
<問題>
「test.txt」ファイルから、「.*」という文字列を含む行を抽出したい。適切なコマンドは次のうちどれか
<疑問>
「egrep '.*' test.txt」という選択肢が不正解になってます。
理由は「-F」オプションがないからという理由ですが
シングルクウォーテで囲めばメタキャラは文字列として扱われるので
問題ないと思うのですが何が間違いなのでしょうか?
Re: メタキャラについて
msg# 1.1
arashi1977
居住地: 広島
投稿数: 1715
引用:実際にやってみました
シングルクォーテーションで囲んでるのは.*という文字列なので、シェルには.*という文字列として渡されます。
そしてシェルがegrepコマンドに.*という文字列を渡してコマンドが実行されるのですが、その時点でegrepは「検索パターン(=拡張正規表現)として.*が渡された」と認識するので、-Fオプションを付けないと、「任意の文字列(任意の1文字の0回以上の繰り返し)」を検索することになります。
よって、上記の通りすべての行が選択されてしまうため、誤りになるんですね。
以前似たような質問があったので、こちらも見てみてください。
http://ping-t.com/modules/forum/index.php?topic_id=2618
シングルクウォーテで囲めばメタキャラは文字列として扱われるので
問題ないと思うのですが何が間違いなのでしょうか?
$ cat test.txt
.*
....
!!!!
test
text
$ egrep '.*' test.txt
.*
....
!!!!
test
text
$ egrep -F '.*' test.txt
.*
そしてシェルがegrepコマンドに.*という文字列を渡してコマンドが実行されるのですが、その時点でegrepは「検索パターン(=拡張正規表現)として.*が渡された」と認識するので、-Fオプションを付けないと、「任意の文字列(任意の1文字の0回以上の繰り返し)」を検索することになります。
よって、上記の通りすべての行が選択されてしまうため、誤りになるんですね。
以前似たような質問があったので、こちらも見てみてください。
http://ping-t.com/modules/forum/index.php?topic_id=2618