{中括弧の間にある文字}を削除して中括弧を維持するには?

{中括弧の間にある文字}を削除して中括弧を維持するには?

たとえば、括弧の間のスペースのみを削除すると、この投稿のタイトルは次のようになります。

How can I remove a character onlyfoundbetweenbrackets, and take the brackets along for the ride?

ここでは、角かっこを所定の位置に保持する例だけを見ました。

編集する:スペースを削除する必要はありません。削除する必要があります。N特徴。

これは私のコードです。Ns、しかし残念ながらこれは不快な中括弧を残します。

sed -i "" -e :1 -e 's/\({[^}]*\)[ñ]/\1/g;t1' file
_________________________________________________
ñañañañañañañaña{ñañañañañañañaña}batmañañañañañañañaña{ñañañañañañañaña}batmañ

getting:
ñañañañañañañaña{aaaaaaaa}batmañañañañañañañaña{ñañañañañañañaña}batmañ

but wishing for:
ñañañañañañañañaaaaaaaaabatmañañañañañañañaña{ñañañañañañañaña}batmañ

FreeBSD/MacOS では gawk や GNU sed は使用できません。

ベストアンサー1

の場合、perl文字がñUTF-8でエンコードされ、その文字のプリアセンブリと分解バージョンを処理すると仮定します。

perl -C -pi -e '
  BEGIN {
    $c = qr{\N{LATIN SMALL LETTER N WITH TILDE}|n\N{COMBINING TILDE}}
  }
  s<\{([^}]*$c[^}]*)\}><$1 =~ s/$c//gr>ge' -- your-file

(入れ子がないと仮定{...})。

おすすめ記事