csplit regex com pipe (|)

2

Eu quero dividir o arquivo por expressão regular, eu tenho formato de arquivo como abaixo

0|t| lorem ...
some text 
138|t| title 
some text 

se eu executar egrep "[0-9]+\|t\|" file | wc -l , ele conta a ocorrência corretamente, mas se eu executar csplit filename /[0-9]+\|t\|/ , ele diz que nenhuma correspondência foi encontrada e não divide o arquivo.

parece ter algum problema com o padrão pipe, mas não é possível descobrir a solução.

    
por Jigar Parekh 30.03.2017 / 07:58

1 resposta

1

Você deve perceber que csplit regexes são BRE e, portanto, não entenderiam o + \| etc.

Basta fazer isso:

csplit yourfile '%^[0-9]*|t|%' '/^[0-9]*|t|/' '{*}'

Em seguida, procure os arquivos com o nome xxNN em seu diretório atual.

    
por 30.03.2017 / 08:17