J'utilise SED sur Windows pour supprimer des lignes superflues dans un format de style UNIX (\ N des terminaisons de ligne). Malheureusement, SED remplace ces fins de ligne, même dans des lignes, cela ne change pas à \ r \ n. Comment puis-je arrêter de sed de le faire?
My SED est un simple SED-Windows-Standalone-EXE: P>
C:\dev>sed --version super-sed version 3.59 based on GNU sed version 3.02.80
4 Réponses :
Je ne sais pas comment vous pouvez le faire avec SED sous Windows, mais avez-vous essayé:
Je sais unix2dos ... Je ne veux tout simplement pas traiter mes fichiers par SED, puis les analyser à l'aide d'UNIX2DOS. Je souhaite dire à SED d'utiliser \ N comme Newline Délimiter et non \ R \ N, bien que je travaille sur une machine Windows.
Voici le problème avec cette approche: elle ajoute une couche de traitement tout à fait inutile. J'essayais de faire des changements de masse dans un député de git décemment sur une machine Windows ... Chaque fichier étant marqué car toutes les lignes changées sont assez gênantes, ce faisant le fait dans SED elle-même est beaucoup plus agréable.
Désolé, mais SED ne semble pas fonctionner comme vous le souhaitez, c'est-à-dire, SED! = AWK (qui est configurable).
J'ai téléchargé le SSED exécutable et la sortie d'aide ne mentionnent aucune option pour cela, car je suis sûr que vous savez. P>
Vous pouvez essayer de modifier le code source ou contacter les auteurs . P>
lire à travers le fichier de nouvelles du code source, j'ai trouvé p> Avez-vous essayé `s / \ r // 'comme la dernière commande Dans votre script? p> J'ai fait une analyse rapide dans la plupart des fichiers texte, mais je n'ai rien trouvé qui me conduit à croire une option CMD-Line qui donnera ce dont vous avez besoin. P > Comme vous ne voulez pas utiliser UNIX2DOS, comme un acte d'optimisme, je propose la possibilité d'utiliser TR to Nettoyant ces Pesky '\ R's P> sed -i -f yourSedScript yourFile
mv yourFile yourFile.wrk
tr -d '\015' yourFile.wrk > yourFile
Je ne transfère pas de fichiers. Je modifie les fichiers spécifiques C ++ Builder (.DFM), qui ont des nouvelles lignes de style Unix, bien que je travaille sur une machine Windows. `s / \ r // 'ne fonctionne pas, car SED attachera à nouveau \ r \ n à la fin de chaque ligne
gnu sed ( http://gnuwin32.sourceforge.net/packages/sed.htm ) a le -B Option pour "Mode binaire", i. e. Ne pas remplacer \ n avec \ r \ n. p>
Si vous utilisez le SED fourni avec Cygwin, il utilise généralement le mode binaire même sans l'option -b. À savoir, les commandes CYGWIN utilisent le chemin de fichier d'entrée pour décider s'ils doivent s'exécuter en texte ou en mode binaire, i. e. Sortie \ r \ n ou \ n: http://www.cygwin.com/cygwin-ug -Net / Utilisation-textbinaire.html . Comme indique le document, le mode binaire est la valeur par défaut pour les chemins de chemin MS-DOS et, dans mon expérience, les systèmes de fichiers montés par défaut sont également montés en mode binaire. P>
Cette ou @kokkie la version shorter de cela devrait être la réponse acceptée IMHO. Ils répondent en fait à la question au lieu de réparer le problème créé. Enfin, je peux utiliser SED pour accélérer la fabrication de changements de masse travaillant dans un repo git sur une machine Windows.
Si vous ajoutez le paramètre -b, vous traitez le fichier sous forme de fichier binaire et ne changera pas vos fins de ligne.
Les états manuels: