
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.