localiza arquivos com extensão .xyz, mas só retorna registros quando dois termos são encontrados

0

Minha situação é que eu tenho que pesquisar todo o meu cluster para arquivos com extensão .xyz e o sed / grep / awk /? off apenas registros que contêm dois valores distintos, "CONFNAME" e "INPUTSQL", respectivamente.

problemas:
1. Estruturando o pipeline adequado que retornará essas informações.
2. Cortando as 50 linhas de sucata entre esses dois valores e formatando como csv com duas colunas.

arquivo de exemplo:

1_TOD_DO_ON.x
1  !prototype|P|||${AIDQ_MP}/dA_lookIP.mp
2  CONFNAME|$|||ITEST_New_Deal
...
...
50 INPUTSQL||||Select \n 'ITOD|L1235'

Os dois dados necessários desses arquivos .zyz são ITEST_New_Deal e ITOD | L1235 (separados por vírgula).

Alguns dos que eu tentei para o problema 1

cd To_Correct_Search_Path

find . -type f -iname "*.xyz" -exec egrep -i CONFNAME --color=auto --with-filename {} \; 

// encontra apenas um valor

find . -type f \( -iname "*.xyz" -o -name "CONFNAME" -o -name "INPUTSQL" \) -exec sh -c 'echo "$0"' {} \; >

// somente encontra o último valor se "INPUT_SQL"

C.

find . -type f -iname "*.pset" -exec egrep -i CONFNAME egrep -i INPUTSQL --color=auto --with-filename {} \; 

// encontra apenas o último valor

para o problema 2

Para remover o lixo entre os valores to, quero desativar esses dois valores distintos , mas incluir esses valores nas informações retornadas pela pesquisa . Eu tenho algumas idéias aqui, mas preciso que o problema 1 seja corrigido primeiro. Definitivamente aberto a sugestões!

    
por SSDdude 18.05.2018 / 16:07

1 resposta

0

Em relação ao seu primeiro problema:

Você pode combinar find e grep . E você também pode combinar vários grep . O primeiro grep não imprime nada ( -q ) e o último só imprime o arquivo se o outro tiver passado.

Isso localizará apenas arquivos contendo as duas strings:

find . -type f -iname "*.xyz" \
  -exec sh -c 'grep -qi CONFNAME "{}" && grep -li INPUTSQL "{}"' \;

O segundo problema provavelmente vale uma nova pergunta quando você ficar preso. Provavelmente bom para awk .

    
por 18.05.2018 / 16:25

Tags