Como remover Ctrl-M de arquivos onde dos2unix, perl, tr e sed não estão presentes?


9

Suponha que você está trabalhando em um servidor unix muito antiga, onde dos2unix, perl, tr, e sednão estão presentes. Como você pode converter arquivos de dos para o formato unix ?


sed é permitido?
— Elmarco 12/08/10

@elmarco: no :(
— Hemant

9
Qual a idade de um servidor unix para não ter tre sed? sedé antigo ........ iirc,
— xenoterracide

11
Estaria exou edestaria disponível em um sistema como esse? Eu não chamaria isso de unix se não houver trou sed.
— Matt Bianco

3
Não sed? Realmente!? Fora de interesse, qual é o sistema? Como Gilles e MattBianco apontam, provavelmente ainda o teria ed.
— Mikel

Respostas:


12

Eu acho que você está se referindo à remoção do sinal de intercalação-M no final das linhas. Você pode usar a pesquisa e a substituição no vi para fazer isso.

No vi, normalmente faço: (onde "^" representa CTRL):

:%s/^V^M//g

O que aparece na tela como:

:%s/^M//g

obrigado que funcionou :). Eu acho que é uma solução muito portátil.
— Hemant

4
Você também pode usar sed para fazer a mesma coisa sem precisar vim o arquivo: sed -e '% s / ^ V ^ M // g' nome do arquivo Isso também será exibido na tela como sed e '% s / ^ M // g 'filename Em geral, se você pode procurar / substituí-lo no vim, o comando é praticamente o mesmo no sed.
— Gabe.

2
@gabe: a solução sed é realmente ainda mais portátil +1 :)
— wzzrd

@wzzrd sede visão ambos especificados pelo POSIX , e esse vicomando não usa nenhuma extensão do Vim.
— Curinga

@jjclarkson o que significa ^Ve '^ M' significa?
— Cokeude 28/04

6

Um servidor sem trou sedprecisaria ser muito antigo ou perder alguns comandos básicos. Espero que edesteja lá; existia na primeira edição do Unix .

ed /path/to/file
1,$s/^V^M$//
w
q

onde ^V^Msignifica digitar Ctrl+ Ve Ctrl+ M(para inserir um feed de linha literal). Se você souber que todas as linhas terminam em CR LF, use-o 1,$s/.$//(remova indiscriminadamente o último caractere de cada linha).

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.