- ベストアンサー
sedなどで、特定の文字列の後の文字列を抽出したい
sedなどで、特定の文字列の後の文字列を抽出したい シェルスクリプト内で、sedなどを使って特定の文字列の後の文字列を抽出したいのですが、どうすればいいでしょうか? たとえば、abcXYZ123defghiのなかから、XYZの後の「123」を抜き出したいです。 echo abcXYZ123defghi | sed ... のようにして実行させたいです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
日本語対応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/の数字部分が日本語です。
お礼
ありがとうございます。 言葉足らずでしたが、今回は数字を取り出したかったです。 ただ、特定の文字数の場合や、アルファベットのときもあるので、 教えていただいた方法を応用したいと思います。 アルファベットなら、[0-9]のかわりに[a-z]にすればいいのですよね?