Script do Unix: gravar em outro arquivo com “:” está falhando

0

Eu tenho registro abaixo (e muitos outros registros) em um arquivo

9460    xyz            abc (lmn):1027739543798. Taxpayer's identification number (INN): 123. For all IIB. 2016/02/03

Eu preciso procurar a palavra-chave IIB . Se coincide, então eu preciso pegar todo o registro e gravar em outro arquivo.

Abaixo está o código que já existe. Este código não está funcionando. Problema com este código é quando leva a correspondência completa registro, ele está ignorando o texto que fica depois de ":" e escrevendo para outro arquivo.

cat keyword.cfg | while read KwdName
do
    echo "KEYWORD:"${KwdName} //This prints IIB
    grep "^${KwdName}\|${KwdName}\|~${KwdName}~\|:${KwdName}$\|:${KwdName}~" ${mainFileWithListOfRecords} | awk -F ":" '{print $1}' >> ${destinationFile}
done

Então, em vez de escrever abaixo do registro no arquivo de destino

9460    xyz            abc (lmn):1027739543798. Taxpayer's identification number (INN): 123. For all IIB. 2016/02/03

É só escrever,

9460    xyz            abc (lmn)

cat -vte mainFileWithListOfRecords fornece a saída abaixo

9460^IMEZHPROMBANK^I^ICJSC ;IIB;~ Moscow, (lmn): 1027739543798. Taxpayer's identification number (INN): 123. For all IIB. 2016/02/031#msid=s1448434872350^IC1^I2000/12/28^I2015/11/26^I^I$
    
por user2488578 03.02.2016 / 10:38

1 resposta

0

Se tudo o que você precisa fazer é procurar a string IIB em cada linha e copiar as linhas que contêm essa palavra para um novo arquivo, então o seguinte faz isso:

grep -w IIB inputfile >outputfile

O -w forçará grep a procurar a palavra completa IIB (em vez de IIIB ou IIB2 ).

    
por 27.04.2018 / 12:22