problem mit tr - search replace
-
hi,
ich moechte alle 0, in meinem file durch 0,tab ersetzen.
cat input.txt | tr '0,' '0\t' > output.txt
tr: Illegal byte sequencewie kann man das fixen?
LG
-
Vermite, daß tr nur Einzelzeichen kann.
sed 's/0,/0\t/' input.txt > output.txt
Nett ist auch
sed -i 's/0,/0\t/' input.txt
Dabei wird input.txt selber geändert.
-
Uups,
sed 's/0,/0\t/g' input.txt > output.txt
!
Ohne das g ersetzt er nur das erste Vorkommen pro Zeile.
-
nico_r schrieb:
hi,
ich moechte alle 0, in meinem file durch 0,tab ersetzen.
cat input.txt | tr '0,' '0\t' > output.txt
tr: Illegal byte sequenceIst die Zeile wirklich exakt das was dir die darunterstehende Fehlermeldung ausspuckt? Welche tr-Implementierung benutzt du denn?
Ansonsten macht der tr-Aufruf eh nicht das was du willst. So wie es da steht, werden Kommata mit Tabs ersetzt (und Nullen mit Nullen...). Tr ohne Flags fasst seine Argumente als zwei Arrays von Zeichen auf. Ein Zeichen aus dem ersten Array wird mit dem Zeichen an gleicher Position aus dem zweiten Array substituiert.
Volkards Vorschlag passt da besser.
-
@volkard:
sed 's/0,/0\t/g' input.txt > output.txt
sed: RE error: illegal byte sequence
-
das encoding des input files:
file -I input.txt
input.txt: text/plain; charset=unknown-8bitfile kommt von hier:
http://help.sentiment140.com/for-studentsDownload:
https://docs.google.com/file/d/0B04GJPshIjmPRnZManQwWEdTZjg/edit
-
nico_r schrieb:
@volkard:
sed 's/0,/0\t/g' input.txt > output.txt
sed: RE error: illegal byte sequenceDie Leuzchen auf http://stackoverflow.com/questions/11287564/getting-sed-error-illegal-byte-sequence-in-bash schlagen sowas vor:
LC_CTYPE=C sed 's/0,/0\t/g' input.txt > output.txt
-
ok scheint zu klappen, aber der tab wird noch nicht richtig eingefuegt:
0,my whole body feels itchy and like its on fire
into:
0tmy whole body feels itchy and like its on fire
-
Musst du da nicht noch den Backslash extra escapen? Also "\\\t" oder so? Oder "\\t"? Weiß jetzt nicht auswendig, was da welche Shell macht.
-
habs nun so gemacht:
"awk '{gsub("0,","0\t"); print}' input.txt > output.txt"warum funzt sed nicht?
-
Weil nicht alle sed-Versionen die selben Features unterstützen und nicht alle Shells die selben Features unterstützen. Darum wird häufig als Ersatz auch für Kleinzeug Ruby, Perl oder eben (immer noch) awk verwendet.