2016-12-13 4 views
0

In einem Bash-Skript ein AWK Anweisung schreiben, muss ich dies tun:in einem Bash-Skript

cat<<EOF> ins.exe 
grep 'pattern' file | awk '{print $2}' > results 
EOF 

Das Problem ist, dass $ 2 als Variable interpretiert wird und die Datei ins.exe endet enthält " grep 'pattern' Datei | awk '{print}'> Ergebnisse ", ohne die $ 2.

Ich habe versucht,

echo "grep 'pattern' file | awk '{print $2}' > results" >> ins.exe 

verwenden, aber es ist das gleiche Problem.

Wie kann ich das beheben?

+1

Haben Sie versucht 'awk' {print \ $ 2} ''? – GMichael

Antwort

3

entkommen einfach die $:

cat<<EOF> ins.exe 
awk '/pattern/ { print \$2 }' file > results 
EOF 

Kein Bedarf an Rohr grep awk, nebenbei bemerkt.

Mit bash haben Sie auch eine andere Option, die <<'EOF' zu verwenden ist. Dies bedeutet, dass innerhalb der Zeichenfolge keine Erweiterungen auftreten.

+0

Danke, nette Antwort! – Qwertuy

Verwandte Themen