Skript zum Auslesen von Zahlen in einer Textdatei

Zuixy

Grünschnabel
Moin Moin an Alle,

ich würde gern Skript schreiben das folgendes macht:

Guckt in eine .txt-datei und wenn an der 5ten Stelle einer Zeile ein X steht, soll die Zahl am Ende der Zeile( an der 10ten Stelle, aber ich denke es ist einfacher zu sagen am Ende) zu einer Laufvariablen addiert werden. Und so halt das ganze Dokument durchsuchen.

Könnt ihr mir da helfen? ich hab vorallem Probleme mit dem Anfang, wo es ums auslesen der zahl geht.

Vielen Dank im Vorraus,
Zuixy
 
Hi.

Nach der Unix Philosophie: für jede Aufgabe das geeignete Tool:
Code:
awk 'BEGIN { i = 0; }  ($5 == "X") { i = i + $10; } END { print i }'
Gruß
 
Hey,

vielen Dank für die schnelle Antwort. So wie ich das verstehe sagt die Zeile aus:
Laufvariable: I
Wenn Zeichen 5 = X dann addiere Zeichen 10 zu i
Am Ende gebe i aus.

Allerdings hab ich noch ne Frage. Wie sag ich dem Programm, das es die Datei log.txt öffnen soll und das dann dort ausführt?

Grüße
 
Hi.
So wie ich das verstehe sagt die Zeile aus:
Laufvariable: I
Wenn Zeichen 5 = X dann addiere Zeichen 10 zu i
Am Ende gebe i aus.
Ja.
Allerdings hab ich noch ne Frage. Wie sag ich dem Programm, das es die Datei log.txt öffnen soll und das dann dort ausführt?
Einfach als Parameter übergeben:
Bash:
awk .... log.txt
oder (z.B. wenn die Datei noch vorverarbeitet werden soll) einfach auf die Standardeingabe schreiben:
Bash:
cat log.txt | awk ...
Gruß

PS: Mit $NF kannst du übrigens auf das letzte Feld einer Zeile zugreifen.
 
Zuletzt bearbeitet:
ich hab jetzt mal was probiert.

Die Datei "Eins" hat den Inhalt:
a=3

Und das Skript lautet:

#!/bin/bash

awk 'BEGIN { i = 0; } ($1 == "a") { i = i + $3 ; } END { print i }' Eins

Ich dachte eigentlich ich bekomm dann als Ausgabe 3 aber es kommt immer nur 0. Was hab ich falsch gemacht?

Grüße
 
Du warst wohl etwas ungenau bei der Beschreibung deines Problems. Deshalb hab ich dich wohl missverstanden.

Mit der "5ten Stelle einer Zeile" meinst du wohl das 5. Zeichen der Zeile?

AWK arbeitet etwas anders (schau doch mals ins Handbuch: http://www.manpagez.com/man/1/awk/). Aber man kann es auch dafür missbrauchen.
Code:
awk -F '' ...
Gruß
 

Neue Beiträge

Zurück