Ini seharusnya sangat sederhana, tetapi untuk beberapa alasan itu tidak berfungsi:
sed -i.bak -E 's/\t/ /' file.txt
Alih-alih mengganti karakter tab, itu menggantikan t
karakter. Saya telah mencoba setiap variasi dalam hal ini yang dapat saya pikirkan, bermain dengan mengutip, dll. Saya telah mencari di Google dan menemukan orang lain menggunakan ekspresi yang sangat mirip dan mereka sepertinya bekerja untuk mereka.
Ini -E
adalah hal OS X. Saya pikir kegagalan itu mungkin hasil dari beberapa kekhasan aneh OS X sed
, jadi saya mencobanya dengan Ruby juga (tanpa -i
), dan mendapat hasil yang sama:
ruby -pe '$_.gsub!(/\t/," ")' < file.txt > file.new
Saya menggunakan Bash 3.2.51 pada OS X, dan iTerm, meskipun saya tidak dapat melihat bagaimana hal itu sangat relevan. Saya belum menetapkan variabel lingkungan aneh, meskipun saya dapat memposting apa pun yang menurut Anda mungkin relevan.
Apa yang salah?
UPDATE : Saya harus telah membuat beberapa kesalahan lain atau salah ketik ketika saya mencoba versi Ruby, karena Gilles menunjukkan bahwa itu tidak bekerja (dan saya tidak pernah memiliki dia mengarahkan saya salah!). Saya tidak yakin apa yang terjadi, tetapi saya cukup yakin itu pasti kesalahan saya.
\t
dalamsed
pernyataan denganCTRL-V<TAB>
mana<TAB>
adalah kunci tab danCTRL-V
merupakan kunci kontrol danv
ditekan bersama-sama.