次の情報セットを含むファイルがあります。
cat filename
1 S121
2 M121
3 MS121
4 SM154
5 SM91
[mM] to MS
私は同じパターンを維持するものだけを変更しようとしました。sed script
以下を試しました。
sed -r 's/ms?([0-9])/MS\1/Ig' filename
ただし、これは[mM]に限定されず、行4と5は次のように変更される可能性があります。
4 SMS154
5 SMS91
助けてくれてありがとう。千万です!
答え1
次から始まる部分文字列と一致します。「米」、オプションで続いて「S」、その後に数字が続きます。[0-9]。
4行と5行のテキストには、次の部分文字列も含まれています。
4SM154
5SM91
だから彼らは交換されました。
パターンにプレフィックスを追加してみてください。「\S」次のように、列2のプレフィックスにのみ興味があることを示します。
sed -r 's/(\s)ms?([0-9])/\1XX\2/Ig'
答え2
これはどうですか?あなたの質問は正しいですか?
sed -r 's/m([^s])/MS\1/Ig' file