Linux で予想されるサブグループの代わりに、Sed 置換グループが OSX に追加されます。

Linux で予想されるサブグループの代わりに、Sed 置換グループが OSX に追加されます。

カンマで区切られた3つの列があります。姓、名前、社会的な名前。

姓の列のすべての文字を大文字に置き換えようとしています。

sed 's/\([^,]*\)/\U\1/' foo.file

osxでは、このコマンドは、大文字の文字列を開始するのではなく、各行の先頭に大文字のUを追加しますが、Ubuntuインスタンスでは期待どおりに機能します。

なぜこれが起こるのかわかりません。

マニュアルページには、「マルチバイト文字は ''s'' および ''y'' コマンドの区切り文字としては使用できません。区切り文字を「i」に置き換えると同じことが発生するため、問題になりません。

ベストアンサー1

sed 'h;s/[^,]*,[^,]*,//
     y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/
     H;x;s/[^,]*\n//

' foo.file

おすすめ記事