プロが教えるわが家の防犯対策術!

sedなどで、特定の文字列の後の文字列を抽出したい

シェルスクリプト内で、sedなどを使って特定の文字列の後の文字列を抽出したいのですが、どうすればいいでしょうか?

たとえば、abcXYZ123defghiのなかから、XYZの後の「123」を抜き出したいです。

echo abcXYZ123defghi | sed ...

のようにして実行させたいです。

A 回答 (3件)

echo abcXYZ123defghi | sed -e 's/^.*XYZ\(...\).*$/\1/'

    • good
    • 3
この回答へのお礼

ありがとうございます。
こちらは、XYZの3文字を取るということでしょうか??

ちなみに、「^」はどういう意味でしょうか?

お礼日時:2010/11/04 15:35

「XYZの後の文字列」だと123defghiですが、123を抜き出したいということは、「XYZの後の数字」を抜き出したいと言うことですか?



sed 's/.*XYZ\([0-9]*\).*/\1/'
    • good
    • 4
この回答へのお礼

ありがとうございます。
言葉足らずでしたが、今回は数字を取り出したかったです。
ただ、特定の文字数の場合や、アルファベットのときもあるので、
教えていただいた方法を応用したいと思います。
アルファベットなら、[0-9]のかわりに[a-z]にすればいいのですよね?

お礼日時:2010/11/04 15:37

日本語対応sedだと日本語数字混じりでもできますね。



echo abcXYZ12357defghi | sed -e 's/^.*XYZ\([0-90-9]*\).*$/\1/' -e 'y/0123456789/0123456789/'
12357

※ 使っている日本語コードの指定は必要かも(例えば、 --ctype=EUC)

echo abcXYZ12357defghi | sed -e 's/^.*XYZ\([0-90-9]*\).*$/\1/'
12357

※ 入力フォームに書いている時はASCIIと日本語の判別がし易いけど回答見るとわかり難いですね。後ろの例での結果57とy/0123456789/の数字部分が日本語です。
    • good
    • 2

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A