Trouver et supprimer les terminaisons de lignes DOS sur Ubuntu
J'ai constaté que beaucoup de mes fichiers ont le DOS des fins de ligne. En VI, ils ressemblent à ceci: "^M".
Je ne veux pas modifier les fichiers qui n'ont pas ces DOS des fins de ligne. Comment puis-je le faire à l'aide d'un script bash? Merci!
EV
source d'informationauteur exvance
Vous devez vous connecter pour publier un commentaire.
grep vous obtient une liste de tous les fichiers du répertoire courant qui ont DOS des fins de ligne.
-U
fait grep considérer les fins de ligne au lieu de les dépouiller de distance par défaut-R
rend récursive-l
le rend liste uniquement les noms de fichiers et de ne pas la correspondance des lignesalors vous êtes la tuyauterie qui liste dans le convertisseur de commande (qui est
fromdos
sur ubuntu,dos2unix
d'où je viens).REMARQUE: ne fait pas de type
^M
. au lieu de cela, vous aurez besoin de la presse<Ctrl-V>
puis<Ctrl-M>
pour insérer le^M
personnage et le rendre grep comprendre ce que vous allez pour. ou, vous pouvez taper dans$'\r'
en place de^M
(mais je pense que ne peuvent travailler que pour bash...).Sur ubuntu, vous utilisez le
fromdos
utilitaireUn chemin à l'aide
GNU coreutils
:Beaucoup d'options sont là..vous pouvez essayer avec n'importe quel de ces.. http://www.theunixschool.com/2011/03/different-ways-to-delete-m-character-in.html
vous pouvez utiliser la commande:
en perl:
sinon, vous pouvez faire:
:%s/[ctrl-V][CTRL-M]//g
Remarque si vous effectuez une conversion multi-octets de fichiers, vous devez prendre des précautions supplémentaires, et devrait probablement essayer d'utiliser la bonne iconv ou recode de-spécifications de codage.
Si c'est un fichier ASCII, les deux en dessous de méthodes de travail.
La
flip
programme, dans Debian, le paquet est également appeléflip
peut gérer la ligne de terminaisons. À partir de la notice:Ou vous pouvez utiliser GNU recode:
De sortie:
Convertir unix ligne terminaisons:
De sortie:
recode abrège dos ligne terminaisons comme
pc
de sorte que la logique avecpc..
est: convertir de format pc à la valeur par défaut, qui est latin1 avec unix ligne terminaisons.Une modification de la réponse Gagnante si vous avez besoin de filtrer par fichier se terminant
J'ai utilisé dos2unix au lieu de fromdos mais l'effet doit être le même.