У меня есть простой входной файл для awk, называемый tabmatch.input и со следующим содержимым:
: (test1
: (test2
В первой строке есть одна вкладка, затем ":", а во второй строке две вкладки, затем ":". Слова «test1» и «test2» могут быть любым словом в реальном файле, который я пытаюсь разобрать.
Я пытаюсь создать регулярное выражение, которое соответствует первой строке, но не второй. Например, я пробую это:
user@lab-client:~$ cat tabmatch.input |awk '/\t: \(test/ { {print $2} }'
(test1
(test2
Даже если указать только один \t, а затем ":", он все равно совпадает с двумя \t и ":". Если вместо этого я сопоставляю два \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