Мне нужно использовать регулярные выражения для анализа конкретных строк файла данных. Моя тестовая команда с соответствием работает, и моя тестовая команда для определенных номеров строк работает, но когда я соединяю их вместе, я не получаю вывод.
gawk 'NR==42 {print $0}' filename
выводит всю строку 42
gawk 'match($0, /([0-9]+)/, a) {print NR ":" a[1]}' filename
имеет много распечаток, но, в частности, имеет следующий вывод: 42: 137674 Итак, моя строка 42 имеет числовое совпадение
gawk 'NR==42 match($0, /([0-9]+)/, a) {print NR ":" a[1]}' filename
ничего не печатает, и я понятия не имеюпочему.
У меня есть обходной путь:
gawk 'match($0, /([0-9]+)/, a) {if (NR==42) print NR ":" a[1]}' filename
Но я считаю, что он менее производительный, поэтому хотел бы выяснить, почему другая команда не работает
РЕДАКТИРОВАТЬ: ответил, я полностью забыл о && между NR и матч