ได้โปรดช่วยฉันด้วยฉันต้องการผลลัพธ์ของ "192.168.1.1 #53" โดยใช้คำสั่ง 'grep' 'sed' และ 'cut' ที่บังคับใน linux bash scipting ในข้อความที่ระบุด้านล่าง

;; เวลาสืบค้น: 29 ​​มิลลิวินาที ;; เซิร์ฟเวอร์: 192.168.1.1#53(192.168.1.1) ;; เมื่อ: ส. 19 ก.ย. 12:20:54 BST 2020

answer

สมมติว่าแต่ละองค์ประกอบของสตริงถูกคั่นด้วยช่องว่างเดียว:

grep Query | cut -f8 -d" " | cut -f1 -d"("

ลองสิ่งนี้:

grep -Eo [0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+\#[0-9]+ <filename>

-E ทำให้ grep ทำงานเหมือน egrep

-o ส่งกลับเฉพาะส่วนที่ตรงกัน