Hallo Freunde des Tux:-)
Ich habe 2 Fragen:
a)
Ich habe ein File mit folgendem Inhalt
----------- before.txt ------------
:CURVE
-11, -12, -20, 40, 120, ......
------------------------------------
dieses File möchte ich mittels Kommandozeile zu folgendem "wandeln":
----------- after.txt -------------
-11
-12
-20
40
120
..
..
------------------------------------
oder
---------- after2.txt -------------
-11,
-12,
-20,
40,
120,
..,
..,
------------------------------------
gibts da ein Kommando oder eine Verknüpfung, die das so hinkriegt?
b)
Ich möchte was aus einer seriellen Schnitstelle lesen. Ist ja kein Problem mit
cat /dev/ttySx > RS-out.txt
Dieses Kommando bleibt jetzt "hängen", solange ich CTRL+C drücke. Ich weiss aber, dass das letzte Zeiche, das von der RS kommt, ein <Ausdruck> ist. Wie kann ich etwas aus einer seriellen Schnittstelle (oder allgemein File) lesen, bis <Ausdruck> (z.B. CL/LF) kommt und dann wieder an die Kommandozeile geben?
Danke und Gruess
h-bert
Turnen auf der Kommandozeile
a)
oder
Code: Select all
awk 'BEGIN{RS=","}{if (NR>1) {printf("%s\n", $1);}}' < before.txt > after.txt
Code: Select all
awk 'BEGIN{RS=","}{if (NR>1) {printf("%s,\n", $1);}}' < before.txt > after2.txt
It just works.
Blöd - erst werd ich während des Tippens abgelenkt und dann ist danach jemand schneller gewesen... Egal, hier meine Variante:Und Teil 2:
gsub ersetzt in der Eingabezeile, alle Kommata (/,/) durch Newlines ("\n") bzw. Komma und Newline ",\n". Diese Zeilen werden dann ausgegeben (print). "NR > 1" vor der Aktion sorgt dafür, dass nur die Zeilen ab der zweiten behandelt werden.
Jochen
Code: Select all
awk 'NR > 1 { gsub (/,/,"\n") ; print}' before.txt > after.txt
Code: Select all
awk 'NR > 1 { gsub (/,/,",\n") ; print}' before.txt > after2.txt
Jochen
Die grösste Lüge der EDV? "Mal eben..."