Scriptfrage

NaRc0tIc

Cadet 4th Year
Registriert
Okt. 2006
Beiträge
80
Hi Leute,

kurzes, knackiges Problem:

Code:
1. Zeile A=xxxxxx B=xxxxxx C=xxxxxx
2. Zeile C=xxxxxx A=xxxxxx B=xxxxxx
3. Zeile B=xxxxxx C=xxxxxx A=xxxxxx

Ich möchte aus einer Datei wie obige in jeder Zeile die Spalte ausgeben, die beispielsweise mit C= beginnt. Da die Spalten immer unterschiedlich sind kann ich ja nicht mit festen Spaltenwerten arbeiten sondern muss das ganze dynamisch machen .. nur wie?

Ideen?

Am Ende soll es so aussehen:

Code:
1. Zeile C=xxxxxx
2. Zeile C=xxxxxx 
3. Zeile C=xxxxxx
 
vielleicht hilft dir grep?
ansonsten wäre das ja ein klassischer fall von primitiven stringoperatoren. aber wenn das ein shell-script (bash?) werden soll weiß ich nicht in wie weit das damit möglich ist.
 
Ich würd auch zu grep und evtl noch awk/gawk(?) (damit KÖNNTEST du evtl die Zeilen die C= enthalten noch entsprechend "zuschneiden")
 
Es geht wahrscheinlich auch einfacher, aber es scheint zu funktionieren.

Als Script:
Code:
#!/usr/bin/awk -f
{
        for (i=1; i<=NF; ++i) {
                if ($i ~ /C=/) { print $1,$2,$i }
        }
}
Als Befehl:
Code:
awk '{ for (i=1; i<=NF; ++i) { if ($i ~ /C=/) { print $1,$2,$i } } }'

Beispiel

Datei test:
Code:
1. Zeile A=xxxx B=yyyy C=zzzz
2. Zeile B=xxxx C=yyyy A=zzzz
3. Zeile C=xxxx A=yyyy B=zzzz
Code:
[moorgeist@moorgeist-mobile Test1]$ cat test | ./awk1
1. Zeile C=zzzz
2. Zeile C=yyyy
3. Zeile C=xxxx
Code:
[moorgeist@moorgeist-mobile Test1]$ cat test | awk '{ for (i=1; i<=NF; ++i) { if ($i ~ /C=/) { print $1,$2,$i } } }'
1. Zeile C=zzzz
2. Zeile C=yyyy
3. Zeile C=xxxx
 
Zuletzt bearbeitet:
Meine Version:

Code:
perl -nle 'print ++$count, ". Zeile $1" if /\s(C=\S+)/' datei
 
Zurück
Oben