Wie erstellt man in Bash einen Grep-Befehl mit einem variablen Argument?

Wie erstellt man in Bash einen Grep-Befehl mit einem variablen Argument?

Ich versuche, so etwas in Bash zu tun:

grep ( date | awk '{print "2006-" $6}' ) /some/file/here

Aber diese Syntax ist falsch.

Das Ziel besteht darin, /some/file/here nach dem Muster 2006-2011 zu durchsuchen, wobei 2011 das aktuelle Jahr ist.

Antwort1

grep "$(date | awk '{print "2006-" $6}')" /some/file/here

"..."behält seinen Inhalt als ein Argument bei (auch wenn Leerzeichen vorhanden sind).

$(...)steht für „Befehlsersetzung“, wobei die Standardausgabe aus der Ausführung des eingebetteten Befehls an die Stelle der ursprünglichen Befehlszeile gesetzt wird. (Eine andere Syntax, `...`, ist ebenfalls üblich, aber viel schwieriger zu verschachteln.)

Einfacher:

grep "$(date +'2006-%Y')" /some/file/here

Hier nutzt man die Möglichkeit des Datums, die Ausgabe beliebig zu formatieren.

Beachten Sie, dass keines dieser Ergebnisse mit einem Jahr im Bereich 2006-2011 übereinstimmt, sondern mit der wörtlichen Zeichenfolge „2006-2011“. Wenn Sie ein beliebiges Jahr abgleichen möchten, lassen Sie es uns wissen.

verwandte Informationen