csplit não obedecendo a barra invertida r \ r como retorno de carro

2

Eu tenho um arquivo com \r\n line endings (feed de linha de retorno de carro CRLF).

Este comando funciona:

$ csplit --silent --prefix=email-emailbad.txt- \
    --digits=3 emailbad.txt '/^\.^M/'+1 '{*}'

Isso requer que eu pressione CTLR + V e então CTRL + M para inserir um retorno de carro real personagem.

Eu quero que isso funcione, de modo que eu esteja usando apenas caracteres imprimíveis (para SVN, etc.)

$ csplit --silent --prefix=email-emailbad.txt- \
    --digits=3  emailbad.txt '/^\.\r/'+1 '{*}'

Eu tentei com aspas simples e duplas e sem as aspas. Qualquer sugestão seja bem-vinda.

    
por Felipe Alvarez 02.06.2014 / 07:34

1 resposta

3

Se você estiver usando, ksh93 , zsh ou bash , você pode usar a $'...' ksh-extension, que faz a contrabarra de estilo C escapar da interpretação dentro da string citada:

csplit --silent --prefix=email-emailbad.txt- --digits=3 \
       emailbad.txt $'/^\.\r/+1' '{*}'

Caso contrário, você pode usar printf para criar a string, de maneira muito semelhante:

csplit --silent --prefix=email-emailbad.txt- --digits=3 \
       emailbad.txt "$(printf '/^\.\r/+1')" '{*}'
    
por 02.06.2014 / 08:16