問題45204について
- フォーラムは新サイトへ移行しました。
- このフォーラムではゲスト投稿が禁止されています
問題45204について
msg# 1
maki_nemui
投稿数: 42
以下の「test.txt」ファイルのうち、「#」を含む行のみがマッチするパターンを選びなさい。(全て選択)
以上のような問題で回答では正規表現での判断となってました。
メタキャラクターはファイルの名前の検索時に使用する
正規表現や拡張正規表現は、grepなどのファイル内の内容に関する検索に使用と考えてよろしいのでしょうか?
今回ファイルの「#」を含む行となっているため内容ということがわかり正規表現での判断と考えられるのですが、考え方が違う場合、メタキャラクタと正規表現をどのように使い分けたらいいのか判断がつかないため教えて頂きたいです。
今回の質問を以下にまとめます。
1.メタキャラクターはファイルの名前の検索時に使用し、
正規表現や拡張正規表現は、grepなどのファイル内の内容に関する検索に使用するという考え方で正しいのか?
2.1.の考え方が間違っていた場合、メタキャラクタと正規表現の見分け方についてどのようにするのか?
以上になります。
ご指導よろしくお願いします。
以上のような問題で回答では正規表現での判断となってました。
メタキャラクターはファイルの名前の検索時に使用する
正規表現や拡張正規表現は、grepなどのファイル内の内容に関する検索に使用と考えてよろしいのでしょうか?
今回ファイルの「#」を含む行となっているため内容ということがわかり正規表現での判断と考えられるのですが、考え方が違う場合、メタキャラクタと正規表現をどのように使い分けたらいいのか判断がつかないため教えて頂きたいです。
今回の質問を以下にまとめます。
1.メタキャラクターはファイルの名前の検索時に使用し、
正規表現や拡張正規表現は、grepなどのファイル内の内容に関する検索に使用するという考え方で正しいのか?
2.1.の考え方が間違っていた場合、メタキャラクタと正規表現の見分け方についてどのようにするのか?
以上になります。
ご指導よろしくお願いします。
Re: 問題45204について
msg# 1.1
arashi1977
居住地: 広島
投稿数: 1715
引用:もう少し広くとらえてみてください。
「メタキャラクターはファイルの名前の検索時に使用」するのは間違っていないですが、そもそもその「メタキャラクター」を解釈するのは誰でしょうか。
そして、「正規表現や拡張正規表現は、grepなどのファイル内の内容に関する検索に使用」も、「正規表現や拡張正規表現」を解釈するのは誰でしょうか。
使い分け、見分け方ではなく「誰がそれを解釈するのか」で考えると良いと思います。
例えば例を示します(「パイプとリダイレクト」をまだ学習されてなかったらごめんなさい)。
ここで grep は「ファイル内の内容に関する検索」をしているでしょうか?
1.メタキャラクターはファイルの名前の検索時に使用し、
正規表現や拡張正規表現は、grepなどのファイル内の内容に関する検索に使用するという考え方で正しいのか?
2.1.の考え方が間違っていた場合、メタキャラクタと正規表現の見分け方についてどのようにするのか?
「メタキャラクターはファイルの名前の検索時に使用」するのは間違っていないですが、そもそもその「メタキャラクター」を解釈するのは誰でしょうか。
そして、「正規表現や拡張正規表現は、grepなどのファイル内の内容に関する検索に使用」も、「正規表現や拡張正規表現」を解釈するのは誰でしょうか。
使い分け、見分け方ではなく「誰がそれを解釈するのか」で考えると良いと思います。
例えば例を示します(「パイプとリダイレクト」をまだ学習されてなかったらごめんなさい)。
$ ls -1 / | grep '^h'
home
Re: 問題45204について
msg# 1.1.1
maki_nemui
投稿数: 42
arashi1977さん返答ありがとうございます。
引用:
引用:これは、ルートディレクトリの一覧表示後、その一覧から先頭がhの行を検索していると考えたらいいのでしょうか?
上の例から考えると、メタキャラクタは名前などの検索に使われて、正規表現はコマンドやファイル内といった出力された内容に対しての検索に使われるという感じなのでしょうか?
すみません。調べたのですが、誰がそれを読み込むかというのがわかりませんでした。
引用:
「メタキャラクターはファイルの名前の検索時に使用」するのは間違っていないですが、そもそもその「メタキャラクター」を解釈するのは誰でしょうか。
そして、「正規表現や拡張正規表現は、grepなどのファイル内の内容に関する検索に使用」も、「正規表現や拡張正規表現」を解釈するのは誰でしょうか。
使い分け、見分け方ではなく「誰がそれを解釈するのか」で考えると良いと思います。
引用:
$ls -l / | grep '^h'
上の例から考えると、メタキャラクタは名前などの検索に使われて、正規表現はコマンドやファイル内といった出力された内容に対しての検索に使われるという感じなのでしょうか?
すみません。調べたのですが、誰がそれを読み込むかというのがわかりませんでした。
Re: 問題45204について
msg# 1.1.1.1
arashi1977
居住地: 広島
投稿数: 1715
引用:そうです。一覧の中から、ですね。
引用:惜しい。「誰が解釈するか」を意識するのです。「何のために使うか」という観点ではありません。
「何に、どのような指示をする、そうするとどのような結果が得られる」といううちの「何に」の理解が浅いために起きている疑問だと思います。
ここで言うメタキャラクタは「bash(シェル)」が解釈するものです。シェルはファイルの中身を検索したりするものではなく、コマンドを実行したり実行するために必要な情報(ファイル名、ディレクトリ名など)を扱います。
また、 maki_nemui さんが意識されている「正規表現や拡張正規表現」は「grep」の引数として使用していることからも分かる通り、ここでは「grepコマンド」が解釈します。grepコマンドは受け取った文字列や指定されたファイルの中を、指定されたキーワード(正規表現を含む)によって検索するツールです。
もう一度「誰がそれを解釈するのか」を意識してみてください。
引用:これは、ルートディレクトリの一覧表示後、その一覧から先頭がhの行を検索していると考えたらいいのでしょうか?$ls -l / | grep '^h'
引用:
上の例から考えると、メタキャラクタは名前などの検索に使われて、正規表現はコマンドやファイル内といった出力された内容に対しての検索に使われるという感じなのでしょうか?
「何に、どのような指示をする、そうするとどのような結果が得られる」といううちの「何に」の理解が浅いために起きている疑問だと思います。
ここで言うメタキャラクタは「bash(シェル)」が解釈するものです。シェルはファイルの中身を検索したりするものではなく、コマンドを実行したり実行するために必要な情報(ファイル名、ディレクトリ名など)を扱います。
また、 maki_nemui さんが意識されている「正規表現や拡張正規表現」は「grep」の引数として使用していることからも分かる通り、ここでは「grepコマンド」が解釈します。grepコマンドは受け取った文字列や指定されたファイルの中を、指定されたキーワード(正規表現を含む)によって検索するツールです。
もう一度「誰がそれを解釈するのか」を意識してみてください。
Re: 問題45204について
msg# 1.1.1.1.1
maki_nemui
投稿数: 42
引用:なるほど。メタキャラクタは「bash(シェル)」などのスクリプトが解釈するもので、正規表現や拡張正規表現は、スクリプト内で実行されるコマンドが解釈するということなんですね。
頭でモヤモヤしてたのが晴れました。
ありがとうございます
ここで言うメタキャラクタは「bash(シェル)」が解釈するものです。シェルはファイルの中身を検索したりするものではなく、コマンドを実行したり実行するために必要な情報(ファイル名、ディレクトリ名など)を扱います。
また、 maki_nemui さんが意識されている「正規表現や拡張正規表現」は「grep」の引数として使用していることからも分かる通り、ここでは「grepコマンド」が解釈します。grepコマンドは受け取った文字列や指定されたファイルの中を、指定されたキーワード(正規表現を含む)によって検索するツールです
頭でモヤモヤしてたのが晴れました。
ありがとうございます
Re: 問題45204について
msg# 1.1.1.1.1.1
arashi1977
居住地: 広島
投稿数: 1715
引用:一部誤解があるので。
メタキャラクタは「bash(シェル)」などのスクリプトが解釈するもの
→スクリプト(=シェルスクリプト)はbashなどの「シェル」が解釈するものです。メタキャラクタを解釈するのは「シェル」です。
正規表現や拡張正規表現は、スクリプト内で実行されるコマンドが解釈する
→「スクリプト内で実行されるコマンド」ではなく、「コマンド」が単独で解釈します。(じゃないと私が↑で例示した「$ ls -1 / | grep '^h'」が成り立たない。)
なるほど。メタキャラクタは「bash(シェル)」などのスクリプトが解釈するもので、正規表現や拡張正規表現は、スクリプト内で実行されるコマンドが解釈するということなんですね。
メタキャラクタは「bash(シェル)」などのスクリプトが解釈するもの
→スクリプト(=シェルスクリプト)はbashなどの「シェル」が解釈するものです。メタキャラクタを解釈するのは「シェル」です。
正規表現や拡張正規表現は、スクリプト内で実行されるコマンドが解釈する
→「スクリプト内で実行されるコマンド」ではなく、「コマンド」が単独で解釈します。(じゃないと私が↑で例示した「$ ls -1 / | grep '^h'」が成り立たない。)
Re: 問題45204について
msg# 1.1.1.1.1.1.1
maki_nemui
投稿数: 42
引用:シェル文法で作られたスクリプトはシェルが解釈し、
メタキャラクタ(メタ文字)もシェルが解釈するが、スクリプトとメタキャラクタは全く違うものということでよろしいでしょうか?
すみません。スクリプトというものを理解できていませんでした。
メタキャラクタは「bash(シェル)」などのスクリプトが解釈するもの
→スクリプト(=シェルスクリプト)はbashなどの「シェル」が解釈するものです。メタキャラクタを解釈するのは「シェル」です。
正規表現や拡張正規表現は、スクリプト内で実行されるコマンドが解釈する
→「スクリプト内で実行されるコマンド」ではなく、「コマンド」が単独で解釈します。(じゃないと私が↑で例示した「$ ls -1 / | grep '^h'」が成り立たない。)
メタキャラクタ(メタ文字)もシェルが解釈するが、スクリプトとメタキャラクタは全く違うものということでよろしいでしょうか?
すみません。スクリプトというものを理解できていませんでした。
Re: 問題45204について
msg# 1.1.1.1.1.1.1.1
arashi1977
居住地: 広島
投稿数: 1715
「スクリプト」とは本来「台本」のことですが、「処理の内容を記述したもの」です。ざっくり言い換えるなら「プログラム」です。
http://e-words.jp/w/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88.html
スクリプトの例としては
みたいな感じでしょうか。
(内容を理解して処理するのは /bin/bash、clearで画面を一旦初期化して、echoでLet's Study! って表示する)
メタキャラクタとはざっくりいうと「その文字そのものとは違う機能(意味)を持つ特殊文字」であり「シェルはメタキャラクタをそのままの"文字"ではなく"ある意味を持った特殊文字"として理解する」のです。
例えば「*」って、文字としては「アスタリスク」と呼ばれるものですがメタキャラクタとしては「0文字以上の何でも」ですし、「?」は「クエスチョンマーク(疑問符)」が「任意の一文字」という別の意味を持ちます。
引用:そうですね、スクリプトは102の範囲のはず。
「スクリプト」を普通に使われてるので理解されているものだとおもっていたのですが、この質問自体は101のものでしたね
http://e-words.jp/w/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88.html
スクリプトの例としては
#!/bin/bash
clear
echo "Let's Study!"
(内容を理解して処理するのは /bin/bash、clearで画面を一旦初期化して、echoでLet's Study! って表示する)
メタキャラクタとはざっくりいうと「その文字そのものとは違う機能(意味)を持つ特殊文字」であり「シェルはメタキャラクタをそのままの"文字"ではなく"ある意味を持った特殊文字"として理解する」のです。
例えば「*」って、文字としては「アスタリスク」と呼ばれるものですがメタキャラクタとしては「0文字以上の何でも」ですし、「?」は「クエスチョンマーク(疑問符)」が「任意の一文字」という別の意味を持ちます。
引用:
すみません。スクリプトというものを理解できていませんでした。
「スクリプト」を普通に使われてるので理解されているものだとおもっていたのですが、この質問自体は101のものでしたね
Re: 問題45204について
msg# 1.1.1.1.1.1.1.1.1
maki_nemui
投稿数: 42
引用:メタキャラクタに対して言い換えるとシェル以外ではメタキャラクタは特殊文字として機能しないということですね。
引用:はい、そうなんです。そう考えるとスクリプトを理解すると更にイメージしやすくなるということですかね
メタキャラクタとはざっくりいうと「その文字そのものとは違う機能(意味)を持つ特殊文字」であり「シェルはメタキャラクタをそのままの"文字"ではなく"ある意味を持った特殊文字"として理解する」のです。
例えば「*」って、文字としては「アスタリスク」と呼ばれるものですがメタキャラクタとしては「0文字以上の何でも」ですし、「?」は「クエスチョンマーク(疑問符)」が「任意の一文字」という別の意味を持ちます
引用:
そうですね、スクリプトは102の範囲のはず。
「スクリプト」を普通に使われてるので理解されているものだとおもっていたのですが、この質問自体は101のものでしたね