Нет, потому что вы установили свой разделитель полей.Символы пробела теперь имеют большое значение.
Вы можете установить в качестве разделителя полей регулярное выражение для удаления пробелов.Кроме того, передайте значение переменной оболочки в переменную awk, чтобы избежать кавычек.
gawk --posix -F '[[:space:]]*\|[[:space:]]*' -v k=$key '$1 == k' $TABLE_FILE
Обратите внимание, что {print $0}
является действием по умолчанию, поэтому его можно опустить.
Такжеawk может обрабатывать два файла, поэтому вам не нужен цикл bash:
gawk --posix -F '[[:space:]]*\|[[:space:]]*' '
NR == FNR {key[$1] = ""; next}
($1 in key)
' $KEY_FILE $TABLE_FILE
Выражение NR == FNR
означает, что awk просматривает первый файл в списке файлов (NR - это "«Общее число записей», а FNR - номер записи текущего файла: они будут одинаковыми только для первого файла).Эта программа сохраняет ключи в массиве key
и печатает записи в файле таблицы, которые имеют ключ в этом массиве.