Turnen auf der Kommandozeile

Post Reply
Message
Author
PapaQ

Turnen auf der Kommandozeile

#1 Post by PapaQ »

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

User avatar
heinrich
Posts: 219
Joined: 22. Sep 1999 11:22
Location: N49.137 E8.544

#2 Post by heinrich »

a)

Code: Select all

awk 'BEGIN&#123;RS=","&#125;&#123;if &#40;NR>1&#41; &#123;printf&#40;"%s\n", $1&#41;;&#125;&#125;' < before.txt > after.txt
oder

Code: Select all

awk 'BEGIN&#123;RS=","&#125;&#123;if &#40;NR>1&#41; &#123;printf&#40;"%s,\n", $1&#41;;&#125;&#125;' < before.txt > after2.txt
It just works.

User avatar
jochen
prolinux-forum-admin
Posts: 699
Joined: 14. Jan 2000 15:37
Location: Jülich
Contact:

#3 Post by jochen »

Blöd - erst werd ich während des Tippens abgelenkt und dann ist danach jemand schneller gewesen... :) Egal, hier meine Variante:

Code: Select all

awk 'NR > 1 &#123; gsub &#40;/,/,"\n"&#41; ; print&#125;' before.txt > after.txt
Und Teil 2:

Code: Select all

awk 'NR > 1 &#123; gsub &#40;/,/,",\n"&#41; ; print&#125;' before.txt > after2.txt
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
Die grösste Lüge der EDV? "Mal eben..."

Post Reply