質問: sedなどで、特定の文字列の後の文字列を抽出したい sedなどで、特定の文字列の後の文字列を抽出したい シェルスクリプト内で、sedなどを使って特定の文字列の後の文字列を抽出したいのですが、どうすればいいでしょうか? たとえば、abcxyz123defghiのなかから、xyzの後の「123」を抜き出したいです。 echo abcxyz123defghi | sed ... のようにして実行させたいです。
回答: 日本語対応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/の数字部分が日本語です。