ฉันมีไฟล์อินพุตอย่างง่ายสำหรับ awk เรียกว่า tabmatch.input และมีเนื้อหาด้านล่าง:
: (test1
: (test2
บรรทัดแรกมีหนึ่งแท็บ ตามด้วย /// และบรรทัดที่สองมีสองแท็บ ตามด้วย /// คำว่า "test1" และ "test2" อาจเป็นคำใดก็ได้ในไฟล์จริงที่ฉันพยายามแยกวิเคราะห์
ฉันกำลังพยายามสร้าง regexp ที่ตรงกับบรรทัดแรก แต่ไม่ใช่บรรทัดที่สอง ตัวอย่างเช่นฉันลองสิ่งนี้:
user@lab-client:~$ cat tabmatch.input |awk '/\t: \(test/ { {print $2} }'
(test1
(test2
แม้ว่าจะระบุเพียง \t เพียงหนึ่งรายการแล้วตามด้วย quot; แต่ก็ยังตรงกับสอง \t และ quot; ถ้าฉันจับคู่สอง \t แทน มันจะจับคู่เฉพาะบรรทัดที่สองซึ่งมีสอง \t
user@lab-client:~$ cat tabmatch.input |awk '/\t\t: \(test/ { {print $2} }'
(test2
ฉันได้ดูไปรอบ ๆ แล้ว แต่ไม่พบว่าทำไม \t ตรงกับหลาย ๆ \t หรือวิธีทำให้ตรงกันเพียงอันเดียว
ความพยายามอื่นที่ฉันทำคือ:
user@lab-client:~$ cat tabmatch.input |awk '/[\t]: \(test/ { {print $2} }'
(test1
(test2
user@lab-client:~$ cat tabmatch.input |awk '/[\t]?: \(test/ { {print $2} }'
(test1
(test2