To /sed/ or not to /sed/
m4ni4k
-
m4ni4k -
m4ni4k -
Bonjour,
pour obtenir un fichier sources.list comme ceci:
deb file:/archive.ubuntu.com/ubuntu jaunty main restricted universe multiverse
deb file:/archive.ubuntu.com/ubuntu jaunty-security main restricted universe multiverse
deb file:/archive.ubuntu.com/ubuntu jaunty-updates main restricted universe multiverse
deb file:/archive.ubuntu.com/medibuntu jaunty free non-free
D'ordinaire, je me contentais de faire cela:
Mais en réalité, je pourrais presque y arriver plus simplement à l'aide de la commande echo toute seule par l'interpretation du \b
Maintenant, ma question est de savoir ce qu'il manque pour qu'echo sauve le texte tel qu'il l'afficherait dans le terminal et non pas en incluant le caractère de backspace + celui qu'il est censé éffacer?
Merci de votre attention!
pour obtenir un fichier sources.list comme ceci:
deb file:/archive.ubuntu.com/ubuntu jaunty main restricted universe multiverse
deb file:/archive.ubuntu.com/ubuntu jaunty-security main restricted universe multiverse
deb file:/archive.ubuntu.com/ubuntu jaunty-updates main restricted universe multiverse
deb file:/archive.ubuntu.com/medibuntu jaunty free non-free
D'ordinaire, je me contentais de faire cela:
sudo bash -c 'echo -e "deb file:/archive.ubuntu.com/ubuntu `lsb_release -sc`"{,-security,-updates}" main restricted universe multiverse\n" "deb file:/archive.ubuntu.com/medibuntu `lsb_release -sc` free non-free"|sed ''1!\ s/\ //''>/etc/apt/sources.list'
Mais en réalité, je pourrais presque y arriver plus simplement à l'aide de la commande echo toute seule par l'interpretation du \b
sudo bash -c 'echo -e "\bdeb file:/archive.ubuntu.com/ubuntu `lsb_release -sc`"{,-security,-updates}" main restricted universe multiverse\n" "\bdeb file:/archive.ubuntu.com/medibuntu `lsb_release -sc` free non-free">/etc/apt/sources.list'
Maintenant, ma question est de savoir ce qu'il manque pour qu'echo sauve le texte tel qu'il l'afficherait dans le terminal et non pas en incluant le caractère de backspace + celui qu'il est censé éffacer?
Merci de votre attention!
A voir également:
- To /sed/ or not to /sed/
- Or - Guide
- Qwerty to azerty - Guide
- Video to video - Télécharger - Conversion & Codecs
- Majuscule to minuscule - Guide
- Bat to exe converter - Télécharger - Édition & Programmation
2 réponses
Salut,
Je ne comprends pas pourquoi l'utilisation de \n ne te conviens pas.
Tu peux faire la commande
Je ne comprends pas pourquoi l'utilisation de \n ne te conviens pas.
Tu peux faire la commande
echo -e ".................................." | sudo tee /etc/apt/sources.listPense quand même à sauvegarder le fichier sources.list d'origine
Ce qui me rend dingue c'est de se sentir si désarmé face au fait que:
<code/>echo -e "deb file:/archive.ubuntu.com/ubuntu `lsb_release -sc`"{,-security,-updates}" main restricted universe multiverse\n" "deb file:/archive.ubuntu.com/medibuntu `lsb_release -sc` free non-free"|sed '1! s/ //'</code>
ou:
donnent exactement le même résultat à l'écran, mais s'enregistrent différemment dans un fichier.
C'est plutôt particulier non?
Et, même si je comprends qu'il puisse y avoir un vague intérêt à l'enregistrer de cette manière là, j'aimerais quand même pouvoir trouver ce moyen de filtrer à la sortie d'echo, le backspace plus le caractère qu'il concerne.
Voila tout!
ou:
donnent exactement le même résultat à l'écran, mais s'enregistrent différemment dans un fichier.
C'est mieux comme ça!
C'est encore trop sophistiqué à mon goût, mais c'est quand même plus conventionnel:
Ca m'énerve de devoir faire appel à une deuxième commande printf en fait.
Ca ne m'étonnerait pas qu'il y ait encore moyen de l'alléger.
Enfin, je suis déjà bien content que ma frustration se soit partiellement atténuée!
finalement!
On remarquera toutefois que cette solution, ainsi que celle à partir de la commande echo -e sont à utiliser avec précaution puisqu'elles nécessitent de faire appel à l'interpréteur bash.
Bon, trêve de bavardage, place au code:
L'essentiel étant donc de substituer la commande echo -e par un printf "%b\n" "$*".
Voila, dorénavant, j'aimerais juste savoir si je devrai m'en tenir à cette dernière solution ou à la précédente (plus en conformité avec le shell standard) avec ses %s, ses (;) et ses 2 printf, ou s'il existe d'autres solutions plus commodes qui m'auraient complètement échappées!?