2016-08-03 12 views
0
awk 'BEGIN {print "'"$QUERY_IMSI_END"'"; 
} 
{ 
split($0,a,";") 
} 
END {print a[3],a[2],a[1]}' 

Das Ergebnisfeld, das aus QUERY_IMSI_END gebildet wird, wird nicht gedruckt. Wie man das richtige Design macht?Es funktioniert nicht in der Konstruktion AWK?

+0

Gibt es eine Chance, das Ergebnis von $ QUIERY_IMSI_END zu erhalten, um bei der Fehlerbehebung zu helfen? Das heißt, schreiben Sie das Problem neu und ersetzen Sie "$ QUIERY_IMSI_END" durch den resultierenden Datensatz, vorzugsweise nur eine Teilmenge der Daten. Vielen Dank. – tale852150

Antwort

0

awk liest den Eingang von stdin ein. Aber print druckt die Ausgabe auf stdout.

Ich denke, Sie wollen diese:

echo "${QUERY_IMSI_END}" | awk -F';' '{print $3, $2, $1}' 

Beachten Sie, dass Sie ein Feldtrennzeichen unterscheidet sich von der Standard eines mit -F passieren kann. Ein expliziter split() ist nicht notwendig.

+0

Und wie kann man in AWK drucken? –

+0

Sie können nicht ...... – hek2mgl

+0

Sie können, können Sie es als Variable übergeben. – 123

0
QUERY_IMSI_END="Some;thing;is;wrong" 
awk -F";" '{print $3,$2,$1}' <(echo $QUERY_IMSI_END) 

oder wenn Sie diese Variable an awk übergeben möchten. Aber denken Sie daran, dass awk von STDIN liest, wo es einen Lese-Puffer oder Handle erwartet. Sie müssen also eine Datei oder einen Puffer-Handle als Eingabe übergeben.

awk -v Variable=$QUERY_IMSI_END -F";" '{split(Variable,array,";"); print a[3],a[2],a[1]}' file1 
+1

Warum der Downvote? Stimmt etwas nicht mit dem Code? – FoldedChromatin