Grep para localizar arquivos que contenham ^ M Quando ^ m dos2unix e sed ou “grep -r $ '\ r' *” não funciona

1

Eu uso o Cygwin e fiz um arquivo txt usando um script Perl.

Existe um ^ M (retorno do cariage do Windows) adicionado, e não tenho ideia de como.

Como faço para encontrar ^ M quando as formas normais (^ m dos2unix e sed ou "grep -r $ '\ r' *") não funcionam?

ao usar menos file01, consigo ver o ^ M, mas não consigo combiná-lo com nada (não com \ r nem com ^ V ^ M).

Ao usar o Col (veja man col) eu me livre dele e de várias outras coisas (eu recebo uma saída muito, muito estranha)

saída normal:

JAN131005 GO:0009055 // GO:0020037 // GO:0003723 // GO:0006468 // GO:0016023 // GO:0003676 // GO:0003964 // GO:0005515 // GO:0004672 // GO:0000166 // GO:0004497 // GO:0006278 // GO:0009055 // GO:0020037 // GO:0003723 // GO:0006468 // GO:0016023 // GO:0003676 // GO:0003964 // GO:0005515 // GO:0004672 // GO:0000166 // GO:0004497 // GO:0006278 ^M // GO:0009055 // GO:0020037 // GO:0003723 // GO:0006468 // GO:0016023 // GO:0003676 // GO:0003964 // GO:0005515 // GO:0004672 // GO:0000166 // GO:0004497 // GO:0006278 ^M // GO:0003964 // GO:0003723 // GO:0006278 // GO:0005488 // GO:0003676 ^M // GO:0005622 // GO:0000166 // GO:0005886 // GO:0006950 // GO:0009628 // GO:0009719 // GO:0005515 // GO:0006950 // GO:0005515 // GO:0006950 // GO:0003674 // GO:0008150 // GO:0003676 ^M // GO:0003676 ^M // GO:0003964 // GO:0003723 // GO:0006278 // GO:0005488 // GO:0003676

após "col < file01 > test01" menos test01 dá:

J//1GO:0003964 //OGO:0003723///OGO:0006278///OGO:0005488///OGO:0003676///OGO:0009719///OGO:0005515///OGO:0006950///OGO:0005515///OGO:0006950///OGO:0003674///OGO:0008150///OGO:0003676// GO:0009055 // GO:0020037 // GO:0003723 // GO:0006468 // GO:0016023 // GO:0003676 // GO:0003964 // GO:0005515 // GO:0004672 // GO:0000166 // GO:0004497 // GO:0006278

como você pode ver, eu removi o problema, e o substituí por 2 outros ... Alguém pode explicar o que o col está removendo aqui e como, e como eu deveria removê-lo para apenas remover o ^ M?

    
por Stenemo 18.07.2013 / 12:13

1 resposta

2

O problema é que \ r não está funcionando, use \ 015 em vez disso:

tr -d "\ 015" < inputfile > arquivo de saída

por alguma razão \ 015 (um literal octal) funciona quando \ r, etc não funciona.

    
por 18.07.2013 / 12:32

Tags