• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

AWK Script - Daten aus mehreren Dateien

Nici

Newbie
Hallo!

ich würde gerne Daten aus mehreren Dateien lesen und zusammenfügen. Ich schaffe es problemlos Daten aus einer Datei zu holen, aber wie funktioniert es wenn ich auch noch Daten aus einer zweiten (dritten) Datei brauche?

der Aufruf funktioniert ja z.B. so:
Code:
awk '/Textstelle/ {Anweisungen}' Dateiname

Jetzt will ich aus der ersten Datei Zahlen rausholen, nach denen ich dann in der zweiten Datei suche und die ganze Zeile ausgebe.
Wie könnte ich da vorgehen?
 

schusch

Newbie
Hi,

du kannst dir mit dem awk die entsprechenden sed Kommandos ausgeben,
und dann

Code:
<awk-Skript> | sh

aufrufen. Angenommen deine Zeilennummer steht in $3 und der Dateinamen in $5, dann ginge
Code:
awk '{
printf("sed -n %dp %s\n"; $3, $5)
}' | sh

Tipp: Bevor du "| sh" anhängst, die Ausgabe des awk anschauen.

Gruß
schusch
 

TeXpert

Guru
naja, manpage lesen wäre sicher sinnvoller als solche komischen Stunts:

Code:
   I/O Statements
       The input/output statements are as follows:

       close(file [, how])   Close file, pipe or co-process.  The optional how should only be used when closing one end of a two-way pipe to a co-process.  It must be a string value, either "to" or "from".

       getline               Set $0 from next input record; set NF, NR, FNR.

       getline <file         Set $0 from next record of file; set NF.

       getline var           Set var from next input record; set NR, FNR.

       getline var <file     Set var from next record of file.

also Beispiel:
Code:
$ awk 'BEGIN { getline < "/etc/motd" ; printf $0;}'
 

abgdf

Guru
Hi,

ohne Deine Dateien zu kennen, ist Deine Frage nicht so leicht zu beantworten.
Aber allgemein könntest Du Variablen verwenden, z.B.

Code:
a=$(awk /suchstring/ datei)
echo $a

(also dabei das obige awk-Kommando in $() oder `` setzen.)

Dann kannst du $a im nächsten awk-Kommando als Suchstring zwischen / und / verwenden.
Ganze Zeilen kann man ansonsten auch leicht mit

Code:
grep suchwort datei

ausgeben lassen.

Viele Grüße
 
Oben