sedコマンドは特殊文字(著作権および商標記号)を削除できません。

sedコマンドは特殊文字(著作権および商標記号)を削除できません。

sedコマンドを使用して著作権文字を削除しようとしています。しかし、うまくいきません。以下は使用される命令です。

sed 's/; © E/; (c)/g' input.txt > output.txt

しかし、viエディタを使用してファイルを開くと\251

助けてください?

答え1

みんなありがとうございます。

Perlで解決策を得ました。

perl -lape 's/[^[:print:]]*//g'

答え2

16進コードを使用してこれを行うには、不快なトリックを使用できます。たとえば、デフォルトのUTF-8 asciiでは、which isを使用して一重引用符の'16\x27進コードを印刷できます。

echo -e "\x27hello\x27"
'hello'

著作権記号は基本 ASCII テーブルの一部ではありませんが、拡張 ASCII コードに属します。 16進コードの組み合わせで拡張ASCIIを印刷することもできます。

(提案に基づいてhttp://www.fileformat.info/info/unicode/char/a9/index.htm)

echo -e '\xc2\xa9'
©

同様に、sedではこれらの16進コードを使用できます。

a="hello ©"
sed 's/\xc2\xa9/??/' <<<"$a"  ##replacing copyright symbol with two questionmarks
hello ??

著作権記号を表す \xc2\xa9 が機能しない場合は、「円で囲まれたラテン大文字 C」である \xe2\x92\xb8 をお試しください。

また試してみてください\o251(ゼロではなく小文字の「o」を使用)。

関連情報