PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Ausgabe von cut in Datei umleiten



wretchctk
12.02.09, 17:04
Hallo,

ich möchte einen Bereich einer Zeile aus einer Logdatei in eine andere Datei schreiben und benutze dazu folgende Befehlszeile:

tail -f testfile | grep name --line-buffered | cut -c 48-80 > output.txt

leider bleibt die output Datei leer.
Wenn ich den cut-Befehl weg lasse funktioniert es die Ausgabe in die Datei.

Um auf cut zu verzichten habe ich auch schon awk versucht, aber das geht leider auch nicht:

tail -f testfile | grep name --line-buffered | awk '{print $3}' > output.txt

Vielleicht kann mir jemand mitteilen wo mein Fehler liegt?

Gruß
Maik

kreol
12.02.09, 18:34
Also hier gehts mit cut:
kreol@dhcppc0:~/temp> echo "12345678" | cut -c 2-4 > test.txt && cat test.txt
234Bist Du sicher das die 48-80 stimmen? Also hat die von grep ausgeworfene Zeile soviele Zeichen? cut ist da ziemlich stumpf, also wenn die Zeile nur 47 Zeichen hat bleibt das Ergebnis natürlich leer.

Poste im Zweifel doch mal einen Auszug aus der Ausgabe vom grep hierher und sag, welchen Teil Du brauchst.


Kreol

Painkiller
12.02.09, 19:02
Vermutlich wartet "cut" bis die Ausgabe beendet ist, was bei "tail -f" ja nicht der Fall ist.

Aqualung
12.02.09, 19:39
http://www.linux.com/articles/54514


Finally, the --line-buffered option turns on line buffering, and --m (or --max-count) gives the maximum number of matched lines to show, after which grep will stop searching the given input. For example, this command searches a huge file with line buffering, exiting after at most 10 matched lines occur:

grep --line-buffered -m 10 huge.file

wretchctk
14.02.09, 10:18
Danke für die Antworten. Ich denke auch es liegt daran, dass tail nicht beendet wird.

tail -f testfile | grep name --line-buffered | cut -c 48-80

liefert die gewünschte Ausgabe auf die Konsole. Aber sobald ich die Ausgabe dann in die Datei umleiten will, bleibt die Datei leer.

Ich habe jetzt erstmal alles nach grep in eine Datei schreiben lassen und führe dann cut auf die Ausgabe-Datei aus, so funktionierts. Ist natürlich bisschen umständlich dann extra noch ein Script laufen zu lassen.

Gruß
Maik