Saya memiliki file input sederhana untuk awk, bernama tabmatch.input dan dengan konten di bawah ini:
: (test1
: (test2
Baris pertama memiliki satu tab, lalu ":", dan baris kedua memiliki dua tab, lalu ":". Kata "test1" dan "test2" bisa berupa kata apa saja di file sebenarnya yang saya coba urai.
Saya mencoba membuat regexp yang cocok dengan baris pertama, tetapi tidak dengan baris kedua. Misalnya saya mencoba ini:
user@lab-client:~$ cat tabmatch.input |awk '/\t: \(test/ { {print $2} }'
(test1
(test2
Meskipun hanya menentukan satu \t dan kemudian ":", tetap cocok dengan dua \t dan ":". Jika saya mencocokkan dua \t, itu hanya cocok dengan baris kedua yang memiliki dua \t.
user@lab-client:~$ cat tabmatch.input |awk '/\t\t: \(test/ { {print $2} }'
(test2
Saya telah melihat-lihat tetapi tidak menemukan mengapa \t cocok dengan beberapa \t, atau bagaimana membuatnya hanya cocok dengan satu.
Upaya lain yang saya lakukan adalah:
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