
UNIX初心者の者です。現在Solarisを使い毎日悪戦苦闘しています。
質問なのですが、「正規表現」と「ワイルドカード」とはどのように違うものなのでしょうか。ちょっと混乱しています。
現状の認識では、
「ワイルドカード」-コマンドラインで使うもの。エスケープするときは「’’」で囲む。複雑な指定は難しい。
「正規表現」-コマンドの引数や、スクリプトなどで使われるもの。エスケープするときは「¥」をつける。基本的に「’’」で囲むもの。様々な表現が可能。
といった感じにとらえています。が、いざ使うとなると混乱している状態です。
すみませんが、この2つについて教えてもらえないでしょうか。
あと参考になるような本やホームページなどもあるでしょうか?コマンドの組み合わせやシェルスクリプトの記述なども勉強中なので、その関係の事でもよいので。
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
正規表現(Regular Expressions, RE)は使いこなすと便利ですよね。
>「ワイルドカード」-コマンドラインで使うもの。エスケープするときは「’’」で囲む。
>複雑な指定は難しい。
実際にはシェルスクリプトでも使えますが、ワイルドカードの展開はシェルの仕事だから
Cプログラムでは処理する必要はないし、だいたいそういう認識でいいのでは。
「''」で囲むというのはワイルドカード自身の属性というよりは
コマンドラインでシェルが展開してくれるのを防ぐためですね。
「ワイルドカード」とはもともとトランプ用語で、どのカードの代わりにも使える
オールマイティなカードを指したもので、これから転じて
file000.jpg, file001.jpg,...file999.jpg というファイルがあるとき
「file*.jpg」とか「file???.jpg」「file[0-9][0-9][0-9].jpg」などという指定ができるのが
シェルのワイルドカードで、ここまではご存じと思います。
Solaris のシェルというと Bourne Shell(sh)でしたっけ。Linux の bash など
モダンなシェルよりは機能的に劣ります。
sh ではどのみち複雑な指定はできないのでざっと流しても構いません。
また、bash のような高機能シェルだったら help コマンドでオンラインヘルプが見られます。
シェルのワイルドカード(グロビング)については、アスキーの
「たのしい UNIX」「続・たのしい UNIX」(坂本文)が参考になるでしょう。
また、やはりアスキーの「UNIX プログラミング環境」(Kernighan&Pike著、石田晴久訳)も
古き良き UNIX 文化を伝える不朽の名著ですから、かえって Solaris の sh では
素直に使えるかもしれません。シェルスクリプトから高度なCプログラミングの勉強にも
もってこいです。
ここでも興味深い質問がありましたので、ぜひご覧ください。
No.483118 質問:シェルスクリプトに手をだしてみたいのですが。。。
http://oshiete1.goo.ne.jp/kotaeru.php3?q=483118
>「正規表現」-コマンドの引数や、スクリプトなどで使われるもの。
>エスケープするときは「¥」をつける。基本的に’’」で囲むもの。様々な表現が可能。
よく勉強してらっしゃいますね。正規表現はワイルドカードよりずっと柔軟な表現が可能で
その気になれば分厚い本が一冊書けてしまいます。
事実、オライリーから「詳説 正規表現」(Jeffery E. F. Friedl 著、歌代和正他訳)
という大部が出ています。
http://www.amazon.co.jp/exec/obidos/ASIN/4900900 …
オライリー・ジャパンのサイトになかったとこを見ると、第2版が近々出るのかな?
また正規表現の文法にはさまざまな方言があって、grep, sed のような単純なもの
(BRE, Basic RE)や egrep, awk のように多少拡張されたもの(ERE, Extended RE)
などありますが、現在最有力なのが Perl5 のものです。
Python や Ruby といった後輩スクリプト言語や Java 1.4 の正規表現も
Perl5 互換を目標としています。
正規表現は文字列処理の「肝」ですので(これを軽視しているMSソフトが信じられない!)
解説しているサイトはたくさんあります。
参考 URL の正規表現リンク集からいくらでもたどれますが、
2番目の「Riue ちゃんの正規表現講座」が初心者向けでしょうか。
おさらいには以下の「正規表現メモ」がいいかと思います。
http://www.kt.rim.or.jp/~kbk/regex/regex.html
また、「Perl 正規表現雑技」をご覧になれば、素因数分解までやってのける
正規表現のパワーに瞠目されること間違いありません。
http://www.din.or.jp/~ohzaki/regex.htm
このように、正規表現が最も威力を発揮するのは Perl などの
スクリプト言語ですので、Perl 関連のサイトやドキュメントをご覧になれば
いっそう勉強が進むと思います。長くなってしまいましたが、
美味しいとこだけつまみ食いして、できるところから始めればいいのです。
健闘を祈ります(^^
参考URL:http://www2.famille.ne.jp/~akio1998/l_grep.html, …
ご返答ありがとうございます。
頭の中がすっきりしたような気がします。
毎日、基本的な事しかしていないのですが、それでもこの2つを使うと、いろいろ便利になります。
>正規表現は文字列処理の「肝」ですので
スクリプトなどを勉強すると、まさにおっしゃる通りだと実感します。使っている人には当たり前なのでしょうが、初心者の私には、コマンドを使った様々な機能と共に、正規表現を勉強するつもりです。
>美味しいとこだけつまみ食いして、できるところから始めればいいのです。
最初なのでなんでも有りの気持ちでやっていましたが、シンプルかつ実用的なご助言、ありがとうございます。正規表現なども言葉は悪いですが「いかに楽をするか」「短い表現でシンプルに表すか」みたいなところを感じています。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 日本語 「~人」と「~名」の使い分け 2 2022/06/02 11:59
- 英語 「所有格+数量詞+名詞」と「数量詞+of+所有格+名詞」の意味やニュアンスの違い等について 4 2023/06/28 11:34
- 日本語 〈場所を示す「に」と「で」〉 という誤り 36 2022/11/12 15:04
- 日本語 意味とは何か? どこにあるのか?(Ⅱ) 4 2022/04/21 13:35
- オープンソース csvデータのダブルクォーテーションで囲まれた文字内にあるカンマを削除したい 3 2022/09/02 15:17
- 日本語 「~されてください」は尊敬表現として間違っているか正しいか? 8 2022/09/17 21:04
- 英語 ”be”<動詞>と<助動詞>混同の誤り ― 形式主義文法論の混迷 12 2022/05/17 11:09
- 英語 balanceにおける「残高」「負債」の見分け方や考え方 3 2023/05/16 19:54
- 英語 口頭での"the following..."の可否等について 6 2022/08/19 01:01
- 英語 仮定法と直接法の共存する文での使い分けの文法事項等について 1 2023/07/04 09:19
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
.cshrc ファイルについて
-
ubuntuの端末の左にカレントデ...
-
ログインシェルと対話型シェル...
-
solarisのsetenvが無効
-
Kシェルに関して。
-
BシェルとCシェル
-
シェル(ksh)で変数にある文字列...
-
tcshなのにスクリプト構文中のs...
-
Dirコマンドでフォルダ内ファイ...
-
SONYの音楽ソフト「x-アプリ」...
-
スクリプトのエラー「unexpecte...
-
pingは正常なのにtracerouteで...
-
Linux環境 grepで改行コード(CR...
-
シェルスクリプトでエラーが出ます
-
net use /d の強制実行
-
最初の一度しか実行されないロ...
-
大手町駅。それはホームから非...
-
ラズパイで『’test.service’をs...
-
文化祭の書類で不備がありました
-
TOPコマンドで表示するCPU使用...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
シェル 会話形式でエンターキ...
-
export と set は違うの?
-
.cshrc ファイルについて
-
ターミナルが全く入力できない
-
Cシェル内でBシェルの様な関数...
-
ubuntuの端末の左にカレントデ...
-
シェルとシェルの間で環境変数...
-
シェルスクリプトのbashとperl...
-
Cシェルでのファイルからの入...
-
シェルスクリプトに関する問題...
-
違いについて
-
コンソールでの上下左右矢印ボ...
-
『存在するかどうか分からない...
-
31日前の日付はいつ?
-
BシェルとBashの違い
-
mac os x10.6.4のターミナルでp...
-
シェル(ksh)で変数にある文字列...
-
Tabキー補完や↑キーのヒストリ...
-
tcshなのにスクリプト構文中のs...
-
msys(cygwin)で、シェルスクリ...
おすすめ情報