IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Unix Discussion :

[Commande tr, awk et sed] : caractère en fin de ligne


Sujet :

Unix

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 3
    Points : 5
    Points
    5
    Par défaut [Commande tr, awk et sed] : caractère en fin de ligne
    Bonjour,
    Je travaille sur un script shell qui est censé mettre un caractère à la fin de chaque ligne de tous les fichiers .clh de mon répertoire courant.
    Donc pour ça tout va bien.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cat $base | sed 's/$/\\/g' >> $fichier

    Sauf que ça marche, mais qu'au début du fichier... et de manière aléatoire, y'a des fichiers où ça plante direct...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    ligne1\
    ligne2\
    \
    ligne4\
    ligne5
    \
    ligne 6
    \
    J'ai voulu tester sur un texte tout prêt pour le poster ici, mais sur le texte, ça a marché.

    Alors, je me suis demandé si ce n'était pas un problème de saut de ligne.
    Du coup, j'ai essayé ces deux commandes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cat "$fichier.bak" | tr -s '\n' ' ' > "$fichier.txt
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk 1 RS= ORS="\n" "$fichier.bak
    Mais ça ne marche pas... Ça ne fait aucun effet sur mes fichiers.

    L'extension de mes fichiers est le clh, alors je me suis demandé si y'avait un problème sur ça (pourquoi pas... sachant que les commandes shell sont écrites partout sur le web... l'erreur est ailleurs). J'ai copié les fichiers dans un fichier du même nom, sans l'extension, $base.

    Mes fichiers sont du code source.

    Et enfin, une dernière question, pourquoi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tr "(" " " < $1 > toto0123456789
    ça marche et que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cat $1 | tr "(" " "  > toto0123456789
    ça me met un fichier vide ?

    Merci d'avance !

  2. #2
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Salut,

    Quel système ? Ou quelle distrib?
    Quel shell ?

    Affiche ton fichier (ou un bout du moins si trop grand) avec les caractères non-imprimables :

    $ man woman
    Il n'y a pas de page de manuel pour woman.

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 3
    Points : 5
    Points
    5
    Par défaut
    Je suis sur une Ubuntu 10.10, avec sh. (d'ailleurs, je viens de voir que le post n'est sûrement pas au bon endroit :/ )
    J'essaye le cat de suite.

    A chaque fin de ligne, il y a ^M$ .

  4. #4
    Expert éminent sénior Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Points : 12 264
    Points
    12 264
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    sed "1, $ s/^M//g" fichier
    /!\ le ^M s'obtient en tappant exactement et dans l'ordre
    ctrl+v puis enter
    /!\


    et rien d'autre.

    ça va épurer ton fichier pourri par µ$oft en un vrai fichier exploitable après quoi tu pourras y travailler.

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 3
    Points : 5
    Points
    5
    Par défaut
    J'ai pas eu le choix, j'ai du reprendre un code écrit sous wind***...
    Et le continuer aussi...

    Merci beaucoup, j'essaye le coup de l'épuration !

    J'ai fais la commande d'épuration, mais le résultat est le même. Après peut être que du coup mes tr et awk marcheront mieux.
    Je vous tiens au courant.

  6. #6
    Expert éminent sénior Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Points : 12 264
    Points
    12 264
    Par défaut
    tu as peut etre oublié d'enregistrer le fichier modifié
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed "1, $ s/^M//g" fichier > resultat
    par exemple selon la version de sed
    ou sinon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -i "1, $ s/^M//g" fichier

  7. #7
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Points : 7 882
    Points
    7 882
    Par défaut
    Citation Envoyé par MiladyThethys;5893364
    Et enfin, une dernière question, pourquoi
    [code
    tr "(" " " < $1 > toto0123456789[/code] ça marche et que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cat $1 | tr "(" " "  > toto0123456789
    ça me met un fichier vide ?
    $1 est-il égal à toto0123456789 ?
    ɹǝsn *sıɹɐlos*

Discussions similaires

  1. Réponses: 2
    Dernier message: 17/09/2009, 10h02
  2. Détecter un caractère comme fin de ligne en lisant un fichier
    Par dtwelve dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 28/07/2009, 17h25
  3. Problème avec le caractère de fin de ligne entre linux et windows
    Par Dosseh dans le forum Programmation et administration système
    Réponses: 3
    Dernier message: 28/07/2009, 14h04
  4. Caractère en fin de ligne avec regsub
    Par sylvain_54 dans le forum Tcl/Tk
    Réponses: 1
    Dernier message: 14/08/2008, 18h08
  5. Remplacer caractère de fin de ligne suivi d'une accolade
    Par Olistan dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 07/05/2008, 17h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo