Добавление нуля к полю заставляет awk рассматривать его как число, а не строку:
$ awk -F"|" 'NR==FNR{a[$2+0]++;next} a[$2+0] ' file1.txt file2.txt
a|0001|hj|df
a|0002|ed|nb
a|0004|er|ns
Поскольку строка 0001
отличается от 1
. Добавляя ноль к каждому, мы преобразуем их в числа, что приводит к желаемому вами сравнению.