Saya perlu mengganti beberapa karakter yang tidak dapat dicetak dengan spasi dalam file.
Secara khusus, semua karakter dari 0x00hingga 0x1F, kecuali 0x09(TAB), 0x0A(baris baru), 0x0D(CR)
Sampai sekarang, saya hanya perlu mengganti 0x00karakter. Karena OS saya sebelumnya adalah AIX (tanpa perintah GNU), saya tidak dapat menggunakan sed(well, saya bisa tetapi memiliki beberapa keterbatasan). Jadi, saya menemukan perintah berikutnya menggunakan perl, yang berfungsi seperti yang diharapkan:
perl -p -e 's/\x0/ /g' $FILE_IN > $FILE_OUT
Sekarang saya sedang bekerja di Linux, jadi saya diharapkan dapat menggunakan sedperintah.
Pertanyaan saya:
Apakah perintah ini sesuai untuk mengganti karakter-karakter itu? Saya mencoba, dan tampaknya berhasil, tetapi saya ingin memastikan:
perl -p -e 's/[\x00-\x08\x0B\x0C\x0E-\x1F]/ /g' $FILE_IN > $FILE_OUTSaya pikir
perl -pberfungsi sebagaised. Jadi, mengapa perintah sebelumnya berfungsi (setidaknya, itu tidak gagal), dan yang berikutnya tidak?sed -e 's/[\x00-\x08\x0B\x0C\x0E-\x1F]/ /g' $FILE_IN > $FILE_OUTIni memberitahu saya:
sed: -e ekspresi # 1, char 34: Karakter susunan tidak valid
perl -pmencetak produk akhirstdinsetelah melakukan operasi yang Anda inginkan, dalam hal ini hanya penggantian.sedRegex mungkin berbeda dariperl.