O arquivo de origem contém campos delimitados por vírgulas e delimitados por tubos.
Ele também contém registros de cabeçalho duplicados, separados por vírgulas e canais.
** Arquivo Souce **
FOOID|BIZNO|BARBIZ_CODE
00033567|0035952|A,KEEP
00034145|0036865|A,KEEP
FOOID|BIZNO|BARBIZ_CODE
00030527|0032479|Z4,KEEP
00034984|0037987|Z5,KEEP
FOOID|BIZNO|BARBIZ_CODE
00021826|0022008|Z5,KEEP
00026763|0029293|Z5,KEEP
FOOID,BIZNO,BARBIZ_CODE
A0021826,Q022008,Z5,TRASH
B0021826,R022009,Z5,TRASH
C0021826,S022018,Z5,TRASH
FOOID,BIZNO,BARBIZ_CODE
Eu quero manter apenas um cabeçalho delimitado por um pipe e todos os
registros delimitados por canal.
Ignore o seguinte:
-
Todos os registros e cabeçalhos de campos delimitados por vírgulas
-
Cabeçalhos delimitados por pipe duplicado.
Suposições
-
Primeiro campo no cabeçalho do delimitador de pipe = FOOID
-
Campos delimitados por pipe podem conter vírgulas.
Este script awk remove duplicados cabeçalhos de pipe duplicados do meu arquivo.
Como faço para ignorar todos os registros CSV?
#!/usr/bin/awk -f
BEGIN{ FS="|"
header_f1 = "FOOID" }
{
if (NR==1) { print $0 }
if (NR>1 && $1 != header_f1 && length > 1) { print $0 }
}
Resultados desejados
FOOID|BIZNO|BARBIZ_CODE
00033567|0035952|A,KEEP
00034145|0036865|A,KEEP
00030527|0032479|Z4,KEEP
00034984|0037987|Z5,KEEP
00021826|0022008|Z5,KEEP
00026763|0029293|Z5,KEEP