วิธีการสร้างคำสั่ง grep ด้วยอาร์กิวเมนต์ตัวแปรใน bash?


0

ฉันพยายามทำสิ่งนี้ใน bash:

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

แต่ไวยากรณ์ที่ไม่ถูกต้อง

เป้าหมายคือการ grep / some / file / ที่นี่สำหรับรูปแบบ 2006-2011 โดย 2011 เป็นปีปัจจุบัน

คำตอบ:


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

"..." ถือเนื้อหาเป็นอาร์กิวเมนต์เดียว (แม้ว่าจะมีช่องว่าง)

$(...) ใช้สำหรับ "การทดแทนคำสั่ง" โดยที่ stdout ไม่ให้รันคำสั่งแบบฝังจะถูกใส่ลงในบรรทัดคำสั่งดั้งเดิม (ไวยากรณ์อื่น `...`ก็เป็นเรื่องธรรมดา แต่ยากที่จะทำรัง)

ง่ายขึ้น:

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

ที่นี่คุณใช้ความสามารถของวันที่ในการจัดรูปแบบผลลัพธ์โดยพลการ

โปรดทราบว่าไม่มีสิ่งใดตรงกับปีใด ๆ ในช่วงปี 2549-2554 ซึ่งจะตรงกับสตริงตัวอักษร "2006-2011" หากคุณต้องการจับคู่หนึ่งปีแจ้งให้เราทราบ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.