Sed ajout d'un caractère en fin de ligne
Résolu
vieurou
Messages postés
73
Statut
Membre
-
Lordanonymous Messages postés 229 Statut Membre -
Lordanonymous Messages postés 229 Statut Membre -
bonjour,
Je voudrais avec sed pouvoir ajouter un caractère en fin de ligne, mais uniquement si cette ligne ne commence pas par un #, ni par espace #, ni par tabulation #.
Sur les lignes traitées, je voudrais rajouter un caractère en fin de ligne, mais si cette ligne contient un #, je voudrais que ce caractère soit placé non plus en fin de ligne mais avant le dièse.
Par exemple , je voudrais que le fichier contenant le texte :
devienne :
merci de votre aide
Je voudrais avec sed pouvoir ajouter un caractère en fin de ligne, mais uniquement si cette ligne ne commence pas par un #, ni par espace #, ni par tabulation #.
Sur les lignes traitées, je voudrais rajouter un caractère en fin de ligne, mais si cette ligne contient un #, je voudrais que ce caractère soit placé non plus en fin de ligne mais avant le dièse.
Par exemple , je voudrais que le fichier contenant le texte :
#code commenté
#code commenté
code non commenté
code non commenté #commentaire
devienne :
#code commenté
#code commenté
code non commenté(un caractère en plus ici)
code non commenté(un caractère en plus ici) #commentaire
merci de votre aide
A voir également:
- Sed ajouter un caractère en fin de ligne
- Fin windows 10 - Guide
- Caractère spéciaux - Guide
- Caractere speciaux - Guide
- Partage de photos en ligne - Guide
- Formulaire en ligne de meta - Guide
9 réponses
-e
Permet d'enchainer plusieurs commandes
/^[ ]*#\|#\|^$/!
Recherche toutes les lignes ne commençants pas "^" par un dièse, précédé ou non d'un espace "[ ]*", ou "\|" (on protège le "pipe" par un antislash pour qu'il ne soit pas interprété littéralement) contenant un dièse, ou "\|^$" les lignes vides. Le point d'exclamation final permettant d'exprimer la négation
s/.*/&A/'
On substitue alors toute la ligne ".*" par elle même "&" suivie d'un "A"
-e '/^[ ]*#/!
Nouvelle commande, toutes lignes ne commençant pas par un dièse, précédé ou non d'un espace
s/[ ]*#/A&/'
Substituer le motif constituer d'un ou plusieurs espace(s) suivi(s) d'un dièse par un A et le motif lui même (&)
;-))
Permet d'enchainer plusieurs commandes
/^[ ]*#\|#\|^$/!
Recherche toutes les lignes ne commençants pas "^" par un dièse, précédé ou non d'un espace "[ ]*", ou "\|" (on protège le "pipe" par un antislash pour qu'il ne soit pas interprété littéralement) contenant un dièse, ou "\|^$" les lignes vides. Le point d'exclamation final permettant d'exprimer la négation
s/.*/&A/'
On substitue alors toute la ligne ".*" par elle même "&" suivie d'un "A"
-e '/^[ ]*#/!
Nouvelle commande, toutes lignes ne commençant pas par un dièse, précédé ou non d'un espace
s/[ ]*#/A&/'
Substituer le motif constituer d'un ou plusieurs espace(s) suivi(s) d'un dièse par un A et le motif lui même (&)
;-))
Lordanonymous
Messages postés
229
Statut
Membre
143
Merci, juste ce qu'il me fallait.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
et dans s/[ ]*#/;&/' si je veut aussi qu'il me suprime les tabulation j'atoute \t\+ comme cela?
apres test, ça marche pas
s/[ ]*\t\+#/;&/'
apres test, ça marche pas
eh bien le souci c'est que la premiere commande de mon script est
sed -i -e 's/^M$//' $filequi normalement me le met en format unix, nan?
Salut,
jp@MDK:~/tmpfs ssh$ cat fichier Bonjour, Et si on veut juste commenter par un # une ligne contenant une chaîne donnée ? Merci d'avance. jp@MDK:~/tmpfs ssh$ sed '/commenter/ s/.*/#&/' fichier Bonjour, #Et si on veut juste commenter par un # une ligne contenant une chaîne donnée ? Merci d'avance. jp@MDK:~/tmpfs ssh$;-))
Je comprends pas; chez moi ça marche bien :
[tmpfs]$ cat test.txt un deux trois cent-deux vingt-deux cinq six deux [tmpfs]$ ch=deux [tmpfs]$ echo "$ch" deux [tmpfs]$ sed "/$ch/ s/.*/#&/" test.txt un #deux trois #cent-deux #vingt-deux cinq #six deux [tmpfs]$ sed '/'"$ch"'/ s/.*/#&/' test.txt un #deux trois #cent-deux #vingt-deux cinq #six deux [tmpfs]$;-\