Eu tenho 2 arquivos csv cujo conteúdo é -
expo1.csv
:
102,GREAT,adjective,ENG,p1_0,no,p2_1,no,p3,no,4,yes,p5_2,no,p6,yes....,su1,amb,su_09,no
104,BHAAG,verb,HIN,p1,yes,p2,no,p3_7,amb,p4,no,p5,no,p6_9,yes....,sg4_3,yes,su119,amb
110,.......,su11_0,amb
e
impo1.csv
:
104,p1,no
102,p2,yes
104,p10,no
110,su11,no
Basicamente expo1.csv
é um arquivo no servidor e impo1.csv
é um arquivo que criei para atualizar expo1.csv
. Um script faz as alterações em expo1.csv
conforme especificado em impo1.csv
após executar um pequeno processamento nos dados impo1 (por exemplo, a linha 102, p2, sim de impo1.csv
é processada e, em seguida, é feita uma atualização em expo1.csv
- p2_1,yes
.)
expo1.csv
após alterações:
102,GREAT,adjective,ENG,p1_0,no,p2_1,yes,p3,no,4,yes,p5_2,no,p6,yes....,su1,amb,su_09,no
104,BHAAG,verb,HIN,p1,no,p2,no,p3_7,amb,p4,no,p5,no,p6_9,yes....,sg4_3,yes,su119,amb
110,.........,su11_0,no
Agora, depois que o script fizer as alterações, precisamos validar se as alterações são feitas adequadamente, comparando os arquivos impo1 e expo1. É aqui que estou preso.
Até agora eu pude isolar os dados entre as vírgulas em impo1.csv
separadamente em variáveis usando awk
:
Sno=104 102 104
Posw=p1 p2 p10
cho=no yes no
Agora a pergunta é: como faço para verificar isso? Os arquivos impo1.csv
contém cerca de 3000 atualizações.
Se eu grep p1 expo1.csv|grep no expo1.csv
, obviamente, ele não retornará o resultado correto, pois o arquivo tem muitas cadeias 'não'. Eu tentei usar um loop for para separar os dados usando awk
em variáveis separadas e, em seguida, grep usando um curinga - grep sno expo1.csv|grep '/<$posw.*,$cho>/' expo1.csv
- mas não funciona.
Usando o GNU bash 4.1.2.
EDIT - Deveria ter mencionado isso antes, meu erro - Não há padrões claros no arquivo impo1.csv que eu possa usar para verificar o arquivo expo1. Fiz correções no conteúdo do arquivo de amostra que ilustram o meu ponto.