Saya memiliki file yang sangat besar yang memiliki spasi selebar nol. Dibutuhkan waktu terlalu lama untuk membuka dan mengedit menggunakan vi
jadi saya ingin menghapus semua instance dari karakter menggunakan sed
. Masalahnya adalah, saya tidak tahu bagaimana cara mencocokkan karakter! Saya sudah mencoba menggunakan \u200B
, \x{200b}
. Ada ide?
Saya menjalankan CentOS 5 jika itu membantu sama sekali.
Jawaban:
Ini sepertinya bekerja untuk saya:
Demonstrasi:
Edit:
Didasarkan sebagian pada jawaban Gilles:
sumber
\xe2\x80\x8b
) ketika melihat beberapa string sampel dengan Python. Terima kasih!Perilaku sed GNU dengan UTF-8 tampaknya tidak didefinisikan dengan sangat baik. Secara eksperimental, Anda dapat membuatnya menggantikan byte dari representasi UTF-8:
Sebagai alternatif, Anda dapat mengetik karakter ke shell Anda dan menggunakan salah satu perintah standar di lokal UTF-8:
Di zsh, Anda juga dapat memasukkan karakter melalui urutan pelarian:
sumber
echo -e
,printf
string Format dan ANSI dikutip string (misalnyaecho -e '\u1E4F'
,printf '\u01DD %s\n' 'X'
,mkdir $'\u0250
)Yah, kecuali ada yang punya ide untuk bagaimana
sed
melakukan ini (yang saya masih tertarik, omong-omong) Python untuk menyelamatkan ...sumber
perl -C -pe 's/\x{200B}//g'
?perl -C -pi.bak -e 's/\x{200B}//g' yourfile
hasil di file Anda diperbaiki dan cadangan di