O Grep não consegue encontrar o fim da linha no arquivo de texto do formato DOS?

2

No Ubuntu, estou trabalhando em um arquivo C que foi originalmente criado no Windows e depois comprometido com o controle de origem. Vim mostra que o formato do arquivo é "dos", o que eu obtenho apenas significa que ele tem CR/LF finais de linha. Eu queria obter uma lista de definições de função no arquivo usando grep para encontrar a expressão regular ')$' , mas ela não retornou nada. Quando mudei o formato do arquivo para "unix" ( :set ff=unix in vim ), então o grep funcionou como esperado.

Isso é um bug, ou o grep oficialmente não suporta CR/LF finais de linha? Eu encontrei isso na página man :

-U --binary Treat the file(s) as binary. By default, under MS-DOS and MS-Windows, grep guesses whether a file is text or binary as described for the --binary-files option. If grep decides the file is a text file, it strips carriage returns from the original file contents (to make regular expressions with ^ and $ work correctly). Specifying -U overrules this guesswork, causing all files to be read and passed to the matching mechanism verbatim; if the file is a text file with CR/LF pairs at the end of each line, this will cause some regular expressions to fail. This option has no effect on platforms other than MS-DOS and MS-Windows.

Mas ele diz em MS-DOS e MS-Windows na sentença anterior, então não sei se isso se aplica aqui?

Existe alguma outra expressão regular que deve corresponder a CR/LF , ou alguma outra opção de linha de comando para grep Não estou vendo que isso ajudaria? Ou a única solução para mim é criar um monte de ruído de comprometimento reformatando os arquivos dos meus colegas?

    
por Kisama 13.10.2015 / 13:37

0 respostas

Tags