$ echo "104_Fri" | sed 's/^\([0-9]+\)_\([A-Za-z]+\)$/\1;\2/'
104_Fri
開始番号と終了文字をそれぞれグループに一致させたい。次に、最初のグループ、セミコロン、2番目のグループを出力したいと思います。
私はこの式が次を生成したいと思います:
104;Fri
なぜこれがうまくいかないのですか?
ベストアンサー1
バックスラッシュ+
:
$ echo "104_Fri" | sed 's/^\([0-9]\+\)_\([A-Za-z]\+\)$/\1;\2/'
104;Fri
気づく+
標準の基本正規表現メタ文字ではありません。したがって、バックスラッシュを使用しても移植可能な動作はありませんsed
。
有効またはsed -r
有効sed -E
にする必要があります。拡張正規表現代わりに、これらの文字をバックスラッシュする必要はありません。これらのオプションも非標準ですが、サポートされていないと、不明な欠陥ではなく、少なくともエラーが発生します。このオプションは以下をサポートします。牛に似た一種の栄養sed
そしてすべての主要なBSD派生物(FreeBSD、オープンBSD、ネットワークBSD、オペレーティングシステム)、しかし、多くの商用Unixバージョンではそうではありません。
移植性に優れた拡張正規表現が必要な場合は、以下を使用してください。awk
、常に使用してください。