Dividir arquivo baseado na primeira correspondência de padrão

1

Como posso dividir um arquivo de texto com base na primeira correspondência de um padrão? O arquivo só precisa ser dividido em duas partes, uma contendo tudo antes da linha correspondente ao padrão, uma contendo a correspondência de linhas e tudo mais depois. As linhas depois dela também conterão o padrão novamente, mas isso não deve acionar várias partes.

    
por Tom Ribbens 05.09.2013 / 10:45

3 respostas

0

Que tal

awk -F'+' '{ print $1 }' < abc > firstpart.txt
awk -F'+' '{ print $1 }' < abc > secondpart.txt
    
por 05.09.2013 / 13:59
0

Tente:

sed '/pattern/q' file.txt | grep -v "pattern" > part1.txt
sed -n 'sed -n '/pattern/=' file.txt | head -1'',$p' file.txt > part2.txt

Onde file.txt - seu arquivo

    
por 05.09.2013 / 22:31
0

Não tenho certeza se entendi a última frase, no entanto:

Isso deve copiar toda a linha do seu arquivo até que a linha do padrão seja excluída

head -n 'grep -e "YOUR PATTERN" -n YOURFILE | head -1 | awk -F ":" '{print $1-1}'' YOURFILE > FIRST_FILE_OUTPUT.txt   

isso deve ser copiado da linha de padrão incluída até o final.

tail -n 'grep -e "YOUR PATTERN" -n YOURFILE | head -1 | awk -F ":" '{print "+"$1}'' YOURFILE > SECOND_FILE_OUTPUT.txt

onde YOURFILE nos o arquivo de entrada para dividir SEU PADRÃO é a "chave" que você deseja pesquisar em seu arquivo. FIRST_FILE_OUTPUT.txt e SECOND_FILE_OUTPUT.txt são o arquivo de saída no qual você encontrará a primeira e a segunda parte do seu arquivo.

    
por 25.09.2013 / 13:38

Tags