Как я могу выполнить vlookup с помощью awk?

$ awk 'NR==FNR{a[NR]=$0; next} {print (FNR%2 ? $0 : a[FNR])}' file1 file2
>name.A
GGG
>name.B
AAA
>name.C
TTT
>name.D
CCC
>name.E
CAT

Помимо того, что это более лаконично (и работает :-)), приведенный выше подход более эффективен, чем ваш подход, потому что:

  1. Он не присваивается $0 и поэтому не заставляет awk заново разбивать запись на поля
  2. Он не проверяет второе условие(1)для каждой строки перед тем, как решить, печатать или нет.

Также -не используйте перенаправление ввода для открытия файлов для awk, так как оно не работает для нескольких файлов (, как вы выяснили ), и лишает вас возможности проверить ИМЯ ФАЙЛА.

3
03.08.2021, 13:27
0 ответов

Теги

Похожие вопросы