Comment supprimer Ctrl-M des fichiers où dos2unix, perl, tr et sed ne sont pas présents?


9

Supposons que vous travaillez sur un serveur unix très ancien où dos2unix, perl, tret sedne sont pas présents. Comment pouvez-vous convertir des fichiers de dos au format Unix ?


sed est autorisé?
elmarco

@elmarco: no :(
Hemant

9
Quel âge doit avoir un serveur Unix pour ne pas avoir tret sed? sedest vieux ........ iirc,
xenoterracide

1
Serait exou edserait disponible sur un système comme celui-là? Je ne l'appellerais pas unix s'il n'y a pas de trou sed.
MattBianco

3
Non sed? Vraiment!? Par intérêt, quel est le système? Comme le soulignent Gilles et MattBianco, il en aurait probablement encore edau moins.
Mikel

Réponses:


12

Je pense que vous faites référence à la suppression du caret-M à la fin des lignes. Vous pouvez utiliser la recherche et le remplacement dans vi pour ce faire.

Dans vi, je fais normalement: (où "^" représente CTRL):

:%s/^V^M//g

Qui s'affiche à l'écran comme:

:%s/^M//g

merci qui a fonctionné :). Je pense que c'est une solution très portable.
Hemant

4
Vous pouvez également utiliser sed pour faire la même chose sans avoir à créer le fichier: sed -e '% s / ^ V ^ M // g' filename Cela s'affichera également à l'écran sous la forme sed e '% s / ^ M // g 'filename En général, si vous pouvez le rechercher / le remplacer dans vim, la commande est pratiquement la même dans sed.
gabe.

2
@gabe: la solution sed est en fait encore plus portable +1 :)
wzzrd

@wzzrd, sedet visont tous deux spécifiés par POSIX , et cette vicommande n'utilise aucune extension Vim.
Wildcard

@jjclarkson que signifie ^Vet '^ M' signifie?
cokedude

6

Un serveur sans trou seddevrait être vraiment ancien, ou il manque des commandes de base. J'espère que edc'est là; il existait dans la première édition d'Unix .

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

^V^Msignifie taper Ctrl+ Vpuis Ctrl+ M(pour saisir un saut de ligne littéral). Si vous savez que toutes les lignes se terminent par CR LF, vous pouvez utiliser à la 1,$s/.$//place (supprimer sans discrimination le dernier caractère de chaque ligne).

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.