たとえば、一部の無効な文字を含む大容量(〜180 MB)xmlファイルがあります。
<Data ss:Type="String">7402953^@</Data>
この^@
部分を削除する必要があります。この作業は完了する必要があります
sed -i 's/\^@//g' /tmp/large.xml
ただし、不明な理由で文字列が私の大きなXMLファイル内にある場合、期待どおりに機能しません。ファイルサイズがほんの数KBにすぎない場合は、sed
正しく機能します。
バグのように見えますが、作業があまりにも明白なので不可能だと思います。私は何が間違っていましたか?
ベストアンサー1
あなたの質問によると、(例がないため)^@
大きなファイルでは、実際には2文字(^
および@
)ではなく印刷できない文字の1つだと言いたいと思います。
Ctrl + v
+を使用して端末に印刷できない文字を入力できますCtrl + 2
。文字の代わりに
使うと大丈夫でしょう。 sed
^
@
また、印刷できない文字には必要ありませんので、エスケープシーケンスを削除してください。