Como o @steeldriver mencionou, o problema provavelmente é causado por um estilo de finalização de linha diferente do que o que o grep
está esperando.
Para verificar os finais da linha
Você pode usar hexdump
para verificar exatamente como seus finais de linha são formatados. Eu sugiro que você use meu formato favorito:
hexdump -e '"%08_ad (0x%08_ax) "8/1 "%02x "" "8/1 "%02x "' -e '" "8/1 "%_p""|"8/1 "%_p""\n"' masternospaces.txt
Com a saída, verifique os finais da linha: 0a
- > LF
, 0d
- > %código%. Um exemplo muito rápido daria algo assim:
$ hexdump -e '"%08_ad (0x%08_ax) "8/1 "%02x "" "8/1 "%02x "' -e '" "8/1 "%_p""|"8/1 "%_p""\n"' masternospaces.txt
00000000 (0x00000000) 4e 6f 20 43 4f 57 20 65 6e 64 69 6e 67 0d 0a 45 No COW e|nding..E
00000016 (0x00000010) 6e 64 69 6e 67 20 69 6e 20 43 4f 57 0d 0a nding in| COW..
Observe os finais de linha no formato dos: CR
.
Para alterar os finais da linha
Você pode ver aqui ou aqui para vários métodos de alteração de finais de linha usando várias ferramentas, mas para uma coisa de uma só vez, você sempre pode usar o vi / vim:
vim masternospaces.txt
:set fileformat=unix
:wq
Para grep sem alterar nada
Se você quiser que 0d 0a
corresponda, não importa o término da linha, você sempre poderá especificar finais de linha como este:
grep 'COW[[:cntrl:]]*$' masternospaces.txt
Se uma linha em branco for exibida, você poderá verificar se realmente combinou algo usando a opção grep
de -v
:
grep 'COW[[:cntrl:]]*$' masternospaces.txt | cat -v
Meu favorito pessoal
Você também pode grep e padronizar a saída usando cat
:
sed -n '/COW^M*$/{;s/^M//g;p;};' masternospaces.txt
onde sed
é obtido digitando ^M
no seu teclado.
Espero que isso ajude!