Das sollte eigentlich ganz einfach sein, aber aus irgendeinem Grund funktioniert es nicht:
sed -i.bak -E 's/\t/ /' file.txt
Anstatt die Tabulatorzeichen zu ersetzen, werden die t
Zeichen ersetzt. Ich habe jede erdenkliche Variation ausprobiert, mit Zitaten gespielt usw. Ich habe gegoogelt und festgestellt, dass alle anderen ziemlich ähnliche Ausdrücke verwenden, und sie scheinen für sie zu funktionieren.
Das -E
ist eine OS X Sache. Ich dachte, der Fehler könnte auf eine seltsame Eigenart von OS X zurückzuführen sein sed
, also habe ich es auch mit Ruby (ohne das -i
) versucht und das gleiche Ergebnis erzielt:
ruby -pe '$_.gsub!(/\t/," ")' < file.txt > file.new
Ich verwende Bash 3.2.51 unter OS X und iTerm, obwohl ich nicht sehe, wie all das fürchterlich relevant sein könnte. Ich habe keine seltsamen Umgebungsvariablen festgelegt, obwohl ich alle veröffentlichen kann, die Sie für relevant halten.
Was könnte falsch sein?
UPDATE : Ich muss einen anderen Fehler oder Tippfehler begangen haben, als ich die Ruby-Version ausprobiert habe, da Gilles darauf hinweist, dass es funktioniert (und er hat mich nie falsch gelenkt!). Ich bin mir nicht sicher, was passiert ist, aber ich bin mir ziemlich sicher, dass es mein Fehler gewesen sein muss.
\t
in dersed
mit Anweisung ,CTRL-V<TAB>
wo<TAB>
die Tab - Taste undCTRL-V
Strg - Taste ist undv
zusammengedrückt wird .