ฉันพยายามทำสิ่งนี้ใน bash:
grep ( date | awk '{print "2006-" $6}' ) /some/file/here
แต่ไวยากรณ์ที่ไม่ถูกต้อง
เป้าหมายคือการ grep / some / file / ที่นี่สำหรับรูปแบบ 2006-2011 โดย 2011 เป็นปีปัจจุบัน
ฉันพยายามทำสิ่งนี้ใน bash:
grep ( date | awk '{print "2006-" $6}' ) /some/file/here
แต่ไวยากรณ์ที่ไม่ถูกต้อง
เป้าหมายคือการ grep / some / file / ที่นี่สำหรับรูปแบบ 2006-2011 โดย 2011 เป็นปีปัจจุบัน
คำตอบ:
grep "$(date | awk '{print "2006-" $6}')" /some/file/here
"..."
ถือเนื้อหาเป็นอาร์กิวเมนต์เดียว (แม้ว่าจะมีช่องว่าง)
$(...)
ใช้สำหรับ "การทดแทนคำสั่ง" โดยที่ stdout ไม่ให้รันคำสั่งแบบฝังจะถูกใส่ลงในบรรทัดคำสั่งดั้งเดิม (ไวยากรณ์อื่น `...`
ก็เป็นเรื่องธรรมดา แต่ยากที่จะทำรัง)
ง่ายขึ้น:
grep "$(date +'2006-%Y')" /some/file/here
ที่นี่คุณใช้ความสามารถของวันที่ในการจัดรูปแบบผลลัพธ์โดยพลการ
โปรดทราบว่าไม่มีสิ่งใดตรงกับปีใด ๆ ในช่วงปี 2549-2554 ซึ่งจะตรงกับสตริงตัวอักษร "2006-2011" หากคุณต้องการจับคู่หนึ่งปีแจ้งให้เราทราบ