Il modo più veloce e più core per sostituire "\ r \ n" con "\ n" in un file?


11

Suppongo che trsia un metodo più fondamentale e quindi probabilmente un modo più veloce per sostituire le cose all'interno di un determinato file.

Tuttavia, tr può sostituire solo quantità uguali di caratteri. senso...

2 caratteri possono essere sostituiti solo con 2 caratteri, il che significa sostituzione

\r\ncon \nè fuori discussione tramitetr

è la migliore opzione successiva sed?

sed è il modo più core e più veloce per sostituirlo \r\ncon \nun file data la mancanza di capacità in tr?

vorrei un esempio se possibile.


Cosa significa esattamente "Most Core"?
Keith Thompson,

Risposte:


23

Con sed, puoi fare:

sed 's/\r$//'

Allo stesso modo tr, basta rimuovere \r:

tr -d '\r'

sebbene questo rimuoverà tutte le istanze di \r, non necessario seguito da \n.


2
Questi due non sono identici. Il primo con sostituisce '\ r \ n' con '\ n' (efficacemente), ma il secondo rimuoverà tutto '\ r' ovunque appaiano. È raro che il ritorno a capo venga visualizzato in un file di testo, tranne che alla fine della riga, ma può succedere.
AMS

4

O usare dos2unix

per esempio:

$ echo -ne "1\r\n2" |  od -A n -t x1
 31 0d 0a 32
$ echo -ne "1\r\n2" | dos2unix | od -A n -t x1
 31 0a 32

possiamo vedere sostituire \r\ncon\n


Questo non è un programma nell'elenco OP ma a mio avviso il modo più pulito di fare il lavoro. Lo uso personalmente ogni volta che ho bisogno di tale conversione.
рüффп,
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.