よく寄せられる質問とそれに対するお答えをまとめてみました。わかる範囲で全力投球でお答えしていますが、力不足の場合はごめんなさい。
--------------------------------------------------------------------------------
Q1.sed "s/aaaa/bbbb/g" で、aaaaやbbbbが「/usr/local/etc/」など、「/」を多用する場合、エスケープする(=「\」or 「バックスラッシュ」を使う)のが大変なのだが?[00.06.30]
A1.デリミタ(/)は、別の記号に変えることができます※1。
つまり、sed "s/aaaa/bbbb/g"の代わりに、sed "s#aaaa#bbbb#g"と書いてもOKなんです。aaaaやbbbbの内容によって使い分けるのがよいと思います。awkも同じだと思います。
※1…どんな記号でもよい、というわけではないらしい。たとえば、Linux上で、sedのデリミタに「!」を使うと、bashに叱られます。しくしく。
--------------------------------------------------------------------------------
Q2.○○でプログラミングするには、どんな言語を使うとよいですか?(○○は変数。いろんな分野が入ると考えてください)[00.06.30]
A2.うっわー。そんなに難しいこと私のようなへっぽこスクリプターに聞かれてもわからないです。○○に詳しい方や専門家に聞いてみるか、○○に関連するメーリングリストやニューズグループ、掲示板などを見つけて質問を投げてみてくださいね。
--------------------------------------------------------------------------------
Q3.他に正規表現の例はない?[02.06.05]
A3. 詳しく説明されているサイトはたくさんあります。検索してみてください。私のおすすめは、Perlになってしまいますが、大崎さんのサイトにある「Perl正規表現雑技」です。また、木村さんの「正規表現メモ」は、grep/sed/awk/perlなどのツールで使用できるメタキャラクタの違いをまとめてらっしゃいます。ぶらぼぉです!さらに正規表現について深く学びたい方は、書籍を購入するのも手だと思います(手元にリファレンスとして置いておけますし)。
[参考]
Perl正規表現雑技
正規表現メモ
『詳説 正規表現』(書籍) (Jeffrey E.F.Friedl著,歌代和正監訳,春遍雀来,鈴木武生共訳,オライリージャパン)
コメント (4)
awkではデリミタは変えられません。
!を使って怒られるのはそれがシェル(bash)にとって特別な意味を持っているからです。コマンドを '' (シングルクォート)で括れば怒られません。
投稿者: 定吉七番 | 2006年08月29日 18:42
日時: 2006年08月29日 18:42
awkは-Fで変えられますね。例:awk -F# (#がデリミタ)
投稿者: ちみも | 2006年08月29日 18:55
日時: 2006年08月29日 18:55
-F で変えられるのは FS の内容、つまりフィールドの区切り(セパレータ)です。わたしが云っているのは正規表現を囲む記号のことです。
投稿者: 定吉七番 | 2006年08月30日 01:06
日時: 2006年08月30日 01:06
awkのフィールド区切りがデフォルトではスペースなのを他の記号に変えるのが-Fですね。
で、てっきりその話をされているのかと思っていましたが、正規表現を囲む記号のことでしたか。それならawkの話を書くのは不適切でしたね。
正確性が足りないということで今後もご指摘が続くのでしたら、sedのカテゴリごと削除も検討します。
投稿者: ちみも | 2006年08月30日 10:03
日時: 2006年08月30日 10:03