ファイルからすべてのソフトハイフン(U + 00AD)を削除する方法

ファイルからすべてのソフトハイフン(U + 00AD)を削除する方法

というものがあります。ソフトハイフン。 Unicodeの値は、U+00ADテキストエディタでは表示できません。

明らかに私のファイルのいくつかがいっぱいです。

$ perl -C7 -ne 'for(split(//)){print sprintf("U+%04X", ord)." ".$_."\n"}'
n­c
U+006E n
U+00AD ­
U+0063 c
U+000A

nとの間にc柔らかいハイフンがあります。このコマンドをコピーするとecho n­c(2つではなく)3つの文字があることがわかります。

ファイルからすべてのソフトハイフン(U + 00AD)を削除するには?

答え1

単に使用してsed(GNUでテストしたが、sedGNUではなくsedができるかどうかはわかりません)、文字をsed式にコピー/貼り付けてください。ここでは、コマンドをコピーしecho n­cて実行して、興味のある文字を含むテストファイルを提供するファイルに出力をリダイレクトしました。

$ perl -C7 -ne 'for(split(//)){print sprintf("U+%04X", ord)." ".$_."\n"}' file
U+006E n
U+00C2 Â
U+00AD ­
U+0063 c
U+000A 

また、U+00C2 Â私は理解していませんが、Unicodeを知らないので、Unicodeの不思議な点だと思うものを追加します。ファイルは期待どおりに見え、実際には空白のように見えますが、実際にはとの間に滑らかなaハイフンがありますn

$ cat file
n­c

$ od -c file
0000000   n 302 255   c  \n
0000005

とにかく、その明白なスペースをコピー/貼り付けてに入力すると、uniprops次のようになります。

$ uniprops '­'
U+00AD ‹U+00AD› \N{SOFT HYPHEN}
    \pC \p{Cf}
    All Any Assigned C Other Case_Ignorable CI Cf Format Changes_When_NFKC_Casefolded CWKCF Common Zyyy Default_Ignorable_Code_Point DI Graph X_POSIX_Graph
       Latin_1 Latin_1_Supplement Latin_1_Sup InLatin1 Print X_POSIX_Print Unicode

sed代替演算子にコピーすると、次のようになります。

$ sed 's/­//g' file | perl -C7 -ne 'for(split(//)){print sprintf("U+%04X", ord)." ".$_."\n"}'
U+006E n
U+0063 c
U+000A 

つまり、正しく削除されます。したがって、影響を受けるすべてのファイルにこのコマンドを適用できます。

sed -i 's/­//g' file1 file2 ... fileN

まず、いくつかのファイルを試してみて(そして安全なテストのためにOSとsedの実装に基づいてバックアップを使用またはアーカイブしてから)、すべてのファイルに対して実行してください-i.baki .bak

答え2

使用幸せ(以前のPerl_6)

raku -pe 's:g/\c[SOFT HYPHEN]//;' file

Rakuは高度な組み込みUnicodeサポートを提供しています。ライブラリをロードしたり、コマンドラインフラグを覚えたりする必要はありません。上記は、RakuでUnicode文字を識別する方法、\c[SOFT HYPHEN]つまり名前のみを入力する方法を使用しています!あるいは、Unicode識別子を使用することもできます。

raku -pe 's:g/\x00AD//;' file

Rakuバージョンのおなじみの代替演算子に注意する2つの点:s///またはその略語の直後に修飾語(Rakuでは「副詞」と呼ばれる)を配置できます。:globalss:globals:g

第二に、上記のコードの「バックスラッシュ」が少ないバージョンは次のとおりです。

raku -pe 's:g[\c[SOFT HYPHEN]]="";' file

または

raku -pe 's:g[\x00AD]="";' file

RakuのUnicodeサポートに関する議論については、このリンクを参照してください。

https://www.codesections.com/blog/raku-unicode/
https://docs.raku.org/言語/unicode

関連情報