Come rimuovere Ctrl-M dai file in cui dos2unix, perl, tr e sed non sono presenti?


9

Supponiamo che si sta lavorando su un vecchio server unix dove dos2unix, perl, tre sednon sono presenti. Come puoi convertire file da DOS in formato UNIX ?


sed è permesso?
elmarco,

@elmarco: no :(
Hemant,

9
Quanti anni deve avere un server unix per non avere tre sed? sedè vecchio ........ iirc,
xenoterracide,

1
Sarebbe exo edsarebbe disponibile su un sistema del genere? Non lo chiamerei unix se non c'è tro sed.
MattBianco,

3
No sed? Veramente!? Per interesse, qual è il sistema? Come sottolineano Gilles e MattBianco, probabilmente avrebbe ancora edalmeno.
Mikel,

Risposte:


12

Penso che ti riferisci alla rimozione del cursore M alla fine delle righe. È possibile utilizzare la ricerca e sostituire in vi per fare questo.

In vi faccio normalmente: (dove "^" rappresenta CTRL):

:%s/^V^M//g

Che mostra sullo schermo come:

:%s/^M//g

grazie che ha funzionato :). Penso che sia una soluzione molto portatile.
Hemant,

4
Puoi anche usare sed per fare la stessa cosa senza dover vimare il file: sed -e '% s / ^ V ^ M // g' nome file che mostrerà anche sullo schermo come sed e '% s / ^ M // g 'nomefile In generale, se puoi cercarlo / sostituirlo in vim, il comando è praticamente lo stesso in sed.
gabe.

2
@gabe: la soluzione sed è in realtà ancora più portatile +1 :)
wzzrd,

@wzzrd, sede visono entrambi specificati da POSIX , e quel vicomando non usa alcuna estensione Vim.
Carattere jolly

@jjclarkson cosa significano ^Ve '^ M'?
cokedude,

6

Un server senza tro seddovrebbe essere veramente vecchio o mancare di alcuni comandi di base. Speriamo che edci sia; esisteva nella prima edizione di Unix .

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

dove ^V^Msignifica digitare Ctrl+ Vquindi Ctrl+ M(per inserire un feed di riga letterale). Se sai che tutte le righe finiscono in CR LF, puoi 1,$s/.$//invece usare (rimuovi indiscriminatamente l'ultimo carattere su ogni riga).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.