2016-07-07 5 views
0

Ich habe Probleme, eine Möglichkeit zum Drucken einer bestimmten Spalte einer Textdatei mit dem Befehl awk zu finden.
Ich habe den awk-Befehl in einer FOR-Schleife, die eine große Anzahl von Verzeichnissen durchläuft. In jeder Schleife verwende ich den awk-Befehl, um zwei Spalten aus einer Textdatei mit einer großen Anzahl von Spalten zu drucken. Die erste Spalte, die ich brauche, bleibt bei jedem Schleifeprozess gleich, so dass ich $ 1 ohne Problem verwenden kann. Das Problem tritt auf, wenn ich eine zweite Spalte drucken muss.
Die zweite Spalte, die von awk gedruckt werden soll, ändert jede Iteration durch die for-Schleife. So weit, was ich versucht habe, ist diesErmöglicht der Befehl awk in bash die Verwendung von Variablen, die einen numerischen Wert enthalten, um eine bestimmte Spalte aufzurufen?

#Simplified Example 

count=1 # the counter starts at 1 because I will not be needing col 1 

for i in $list; do 

    count=count+1 

    awk '{print $1 "\t" ${count}}' $file > ex_files.txt 

done 

Hoffentlich macht das, was ich hier geschrieben habe Sinn. Ich habe mir vielleicht auf anderen Hilfeseiten angeschaut, um zu finden, was ich mit meiner Syntax falsch mache, aber bisher erfolglos waren. Die meisten Beispiele, in denen ich awk mit einer Variablen gesehen habe, sind keine dynamischen Variablen, also bin ich irgendwie festgefahren.
Wenn es einen besseren Befehl gibt zu tun, was ich versuche, im Gegensatz zu "awk", bin ich offen dafür. Bitte lassen Sie mich wissen, wenn Sie weitere Informationen benötigen

Antwort

0

Ich fühle mich dumm, weil ich viel Zeit gestern Abend für die Antwort auf die Frage und nach 10 Minuten suchen verbrachte heute Morgen von der Suche fand ich endlich die Antwort über diese Website

http://www.grymoire.com/Unix/Awk.html#uh-4

im Dynamic Variable Abschnitt, sah ich, dass, wenn ich dies über die Syntax der Linie awk geändert

awk '{print $ 1 "\ t" $' $ count '} $ Datei> ex_files.txt

Das hat das Problem behoben. Auf diese Weise wird die Nth (+1) -Spalte nach der N-ten Iteration aus der $ -Datei gezogen.

+0

Anstatt die Variable direkt einzubetten, würde ich '-v' empfehlen, um die Variable zu übergeben:' awk -vc = "$ {count}" '{print $ 1 \' $ count} ' –

+0

i versucht mit Ihrem Vorschlag, aber es hat nicht ganz funktioniert. Noch einmal, ich will nicht nur ein Bash Wiz sein, aber meintest du auch: 'awk -v cnt =" $ {count} "'{print $ 1 \ t" $ cnt}' '? – Jon

Verwandte Themen