Perl正規表現は複数の文字列を認識します。

Perl正規表現は複数の文字列を認識します。

~/foo.txt次の各文字列のインスタンスを含むファイルがあります。

alpha-1
alpha-2
alpha-3
alpha-4
alpha-5
alpha-6
alpha-7
alpha-8
alpha-9

alpha-Xこれらのそれぞれをに変更したいと思います。他のインスタンスを維持したいので、beta-X単にalpha-に置き換えるだけではbeta-不十分です。alpha-

私はこれが次のようになることができると思います。

perl -p -i -e `s/alpha-SOMETHING/beta-SOMETHING/g'

SOMETHINGしかし、それが何であるべきかはよくわかりません。ここに解決策はありますか?

(もちろん9行のコードを実行できますが、これは非効率的です。)

ベストアンサー1

perl -p -i -e 's/alpha-(\d)/beta-$1/g'
  • \d0 ... 9と一致
  • (\d)一致する内容をキャプチャ(保存)して変数に割り当てます。$1(他のキャプチャを追加すると、次の変数に割り当てられます$2。)
  • 数字が2桁以上ある場合は、\d+それを使用して1つ以上の数字を一致させることができます。

おすすめ記事