web-dev-qa-db-fra.com

Convertir les fins de ligne

J'ai utilisé d2u pour convertir les fins de ligne. Après l’installation de Puppy Linux, j’ai remarqué qu’il ne venait pas avec d2u, mais dos2unix. Ensuite, j'ai remarqué qu'Ubuntu manquait à la fois par défaut.

Quel est un autre moyen de convertir les fins de ligne?

53
Steven Penny

Faire cela avec POSIX est délicat:

  • POSIX Sed ne prend pas en charge \r Ou \15. Même si c'était le cas, l'option in place -i N'est pas POSIX

  • POSIX Awk supporte \r Et \15, Mais l'option -i inplace N'est pas POSIX.

  • d2u et dos2unix ne sont pas tilitaires POSIX , mais ex est

  • POSIX ex ne prend pas en charge \r, \15, \n Ou \12

Pour supprimer les retours chariot:

awk 'BEGIN{RS="^$";ORS="";getline;gsub("\r","");print>ARGV[1]}' file

Pour ajouter des retours chariot:

awk 'BEGIN{RS="^$";ORS="";getline;gsub("\n","\r&");print>ARGV[1]}' file
66
Steven Penny

Quelques options:

Utiliser tr

tr -d '\15\32' < windows.txt > unix.txt

OU

tr -d '\r' < windows.txt > unix.txt 

Utiliser Perl

Perl -p -e 's/\r$//' < windows.txt > unix.txt

Utiliser sed

sed 's/^M$//' windows.txt > unix.txt

OU

sed 's/\r$//' windows.txt > unix.txt

Pour obtenir ^M, vous devez taper CTRL-V et alors CTRL-M.

91
jaypal singh