Usando 'find', em seguida, pesquisando cada linha para dois valores no script bash

0
Olá todos eu tenho uma enorme quantidade de arquivos que eu pesquiso com 'find' recursivamente, em seguida, uma vez que todos os tipos de arquivo são encontrados eu quero remover todos os registros não correspondentes a esta seqüência em cada linha, nesta ordem:

INPUT||||SELECT 'BLABLA' as SOR'

- Onde INPUT |||| SELECT (Insensível a maiúsculas e minúsculas) inicia uma linha Onde o conteúdo entre aspas simples (BLABLA) é aleatório, então eu preciso de um curinga aqui. - Onde 'como SOR' não faz distinção entre maiúsculas e minúsculas

EXEMPLO DE UM DO ARQUIVO DE DADOS PROCURADO:

1) INPUT||||select 'LLC'    
2) INPUT||||select 'LLC' as SOR, b.cust_id_num, b.cust_federal_id_num, ...
3) INPUT||||select distinct 'LLC' as SOR, b.cust_id_num, b.cust_federal_id_num, ...
4) INPUT||||select 'BBD' as sor, b.cust_id_num, b.cust_federal_id_num, ...
5) INPUT||||SELECT 'GOD' $VAL, b.cust_ID_num, a, cust live num...
6-+++)... 

A pesquisa bem-sucedida deve resultar no seguinte:
-1ª linha seria ignorada, sem iteração de 'as sor'
Linha -2 seria capturada porque atende a todos os critérios
-3rd linha seria ignorada porque 'distinto' aparece entre 'select' e 'sor'
-4ª linha seria capturada porque atende a todos os critérios
-5ª linha seria ignorada, sem iteração de 'as sor'

Eu tentei muitas coisas sem sorte:

find . -type f -iname "*.dat" -exec sh -c awk '/INPUT||||select/ && /'as SOR'/' "{}" \; > FILE.log
find . -type f -iname "*.dat" -exec grep 'INPUT_SELECT\|as sor' {} \; >  FILE .log

Eu realmente pensei que algo assim iria funcionar no meu roteiro, mas não teve essa sorte!

grep -i "INPUT\||||select \<'...'\> as sor" ...

Eu tentei todos os tipos de escapes e citações para acertar as coisas, mas ainda estou retornando registros que não atendem aos critérios no mentioend do pedido. Obrigado antecipadamente!

    
por SSDdude 02.10.2018 / 18:43

1 resposta

0

Que tal isso?

grep -i -e "INPUT||||select '.*' as SOR" test.in
    
por 02.10.2018 / 19:35