Como converter FDF em CSV?
Opção A:
awk -F "[()]" '{ if ($1=="/V ") value[$2];} \
END {printf( "CompanyName\tEmailAddress\t\tCountryOrRegion\n" ); \
for (x in value)printf("%s\t", x);print "" ; \
}' filled_form.fdf > filled_form.CSV
Opção B:
grep -oP '(?<=\/T \(txt).*(?=\))' filled_form.fdf |awk '{ORS=(NR%3?",":RS)}1'; \
grep -oP '(?<=\/V \().*(?=\))' filled_form.fdf |awk '{ORS=(NR%3?",":RS)}1';
Versão resumida do comando acima seria:
paste -sd, <(grep -oP '(?<=\/T \(txt).*(?=\))' filled_form.fdf) <(grep -oP '(?<=\/V \().*(?=\))' filled_form.fdf)
Opção C:
awk 'NR%2==0{type[$0]} NR%2{value[$0]} END{for (x in type)printf("%s\t", x);print "" ;for (y in value)printf("%s\t", y);print "" ;}' <(grep -oP '(?<=\/T \(txt|\/V \().*(?=\))' filled_form.fdf)
Como converter CSV não amigável em CSV amigável?
Opção A:
awk -F: '{ if ($1=="FieldValue") value[$2];} \
END {printf( "CountryOrRegion\tCompanyName\tEmailAddress\n" ); \
for (x in value)printf("%s\t", x) ;print ""; \
}' filled_form.csv > friendly_filled_form.CSV
Opção B:
grep -oP '(?<=FieldName: txt).*' filled_form.csv |awk '{ORS=(NR%3?",":RS)}1'; \
grep -oP '(?<=FieldValue: ).*' filled_form.csv |awk '{ORS=(NR%3?",":RS)}1'
* Note que este comando é um linear. então, para executá-lo, você precisa digitar / copiar ambas as linhas.
E a versão curta para este seria:
paste -sd, <(grep -oP '(?<=FieldName: txt).*' filled_form.csv) <(grep -oP '(?<=FieldValue: ).*' filled_form.csv)
Opção C:
awk 'NR%2{type[$0]} NR%2==0{value[$0]} END{for (x in type)printf("%s\t", x);print "" ;for (y in value)printf("%s\t", y);print "" ;}' <(grep -oP '(?<=FieldName: txt|FieldValue: ).*' filled_form.csv)
ou até mesmo este:
awk 'NR%2{type[$0]} NR%2==0{value[$0]} END{for (x in type)printf("%s\t", x);print "" ;for (y in value)printf("%s\t", y);print "" ;}' <(awk -F'FieldValue: |FieldName: txt' 'NF>1{print $2}' filled_form.csv)
Como converter PDF para CSV?
Eu completarei a solução com pdfgrep
amanhã, mas se você quiser experimentar por si mesmo, aqui está o comando:
pdfgrep 'CompanyName|CountryOrRegion|EmailAddress' filled_form-submit_format_fdf.pdf
Ele precisa trabalhar no formato de saída. Se você deseja obter apenas palavras inteiras, use a opção -C 0
. boa sorte e espero ajuda;)