Задание для awk. Что-то вроде:
awk -F'|' -v fileformat="/abc/output/file_%04d.txt" -v max=3 -v field=5 '
NR == 1 {header = $0; next}
! ($field in seen) {
seen[$field]
if (++n % max == 1) {
close(out)
out = sprintf(fileformat, ++f)
print header > out
}
}
{print > out}' < /abc/input/a.txt