4

Я хочу использовать awk для сопоставления целых слов из текстового файла. Включая слова, ограниченные не буквенно-цифровыми символами.

Например -

строка для поиска - ABC

Исходный файл -

HHHABCCCCH
HHH ABC
HH(ABC)ASDAASD
HH,ABC-ASASDASD

Результат -

HHH ABC
HH(ABC)ASDAASD
HH,ABC-ASASDASD

3 ответа3

3

Если вы хотите передать "ABC" как переменную вместо жесткого кодирования, используйте оператор сопоставления:

awk -v word=ABC '$0 ~ "[^[:alpha:]]" word "[^[:alpha:]]"'

С gawk (другие awk тоже?) Вы можете использовать \< и \> для обозначения границ слов, где слово представляет собой последовательность букв, цифр и подчеркивания (я полагаю), так что это будет работать для вашего примера:

awk '/\<ABC\>/'
2

Используйте \y для границы слова, например

awk '/\yABC\y/'

См. Https://www.gnu.org/software/gawk/manual/html_node/GNU-Regexp-Operators.html для получения дополнительной информации.

2

Разобрался - возникли проблемы из-за опечатки

awk '/[^[:alpha:]]ABC[^[:alpha:]]/'

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .