Unicodeをサポートするsedに代わるものはありますか?

Unicodeをサポートするsedに代わるものはありますか?

たとえば、

sed 's/\u0091//g' file1

16進数を取得して、次のようにhexdump入力する必要があります。sed

$ echo -ne '\u9991' | hexdump -C
00000000  e9 a6 91                                          |...|
00000003

それから:

$ sed 's/\xe9\xa6\x91//g' file1

答え1

次の構文を使用してください。

sed 's/馑//g' file1

またはエスケープされた形式で:

sed "s/$(echo -ne '\u9991')//g" file1

(以前のバージョンのBashと一部のシェルはこれを理解していないので、echo -e '\u9991'最初に確認してください。)

答え2

Perlは次のことができます。

echo 汉典“馑”字的基本解释 | perl -CS -pe 's/\N{U+9991}/Jin/g'

-CS標準入力、出力、およびエラーに対してUTF-8を有効にします。

答え3

複数のバージョンがsedUnicodeをサポートしています。:

  • ガボ sed、「元のUnix素材」に基づいています。
  • GNU sed、これは独自のコードベースです。
  • 計画9 sed、Unixシリーズオペレーティングシステムに移植されました。

BSD sedに関する情報が見つかりません。変だと思いますが、Unicodeもサポートする可能性が高いと思います。残念ながら、どのエンコーディングを使用するかを示す標準的な方法がないため、sed各エンコーディングは独自の方法で行われます。

答え4

これは私にとって効果的です。

$ vim -nEs +'%s/\%u9991//g' +wq file1

これは私が望むものよりも冗長です。完全な説明は次のとおりです。

  • -nvim スワップファイルの無効化
  • -EEx改善モード
  • -sサイレントモード
  • +'%s/\%u9991//g'交換コマンドの実行
  • +wq保存と終了

関連情報