Введите
119764469|14100733//1,k1=v1,k2=v2,STREET:1:1=NY
119764469|14100733//1,k1=v1,k2=v2,k3=v3
119764469|14100733//1,k1=v1,k4=v4,abc.xyz:1:1=nmb,abc,po.foo:1:1=yu
k1 может быть любым именем с буквенно-цифровым знаком. &: специальные символы, такие как abc.nm.1: 1
Ожидаемый результат (все уникальные столбцы), сортировка не требуется / не нужна, она должна быть очень быстрой
k1,k2,STREET:1:1,k3,k4,abc.xyz:1:1
Мой текущий подход / решение
awk -F',' '{for (i=0; i<=NR; i++) {for(j=1; j<=NF; j++){split($j,a,"="); print a[1];}}}' file.txt | awk '!x[$1]++' | grep -v '|' | sed -e :a -e '$!N; s/\n/ | /; ta'
Работает нормально, но слишком медленно для огромного размера файла (который может быть в МБ или в ГБ)
ПРИМЕЧАНИЕ. Это необходимо при переносе данных, следует использовать базовые команды оболочки Unix, так как в производственной среде могут не использоваться сторонние утилиты.