OVH Cloud OVH Cloud

commande SED

12 réponses
Avatar
Christian Théroux
Bonjour
je désire inscrire une commande SED pour ajouter du texte à la
première ligne
d'un fichier. Lorsque je regarde les exemples dans mon livre, j'y vois
seulement des scripts .sed . Or, je veux tout simplement inscrire une ligne
sed dans mon script .sh.

Des suggestions?

merci

Chris

10 réponses

1 2
Avatar
Stephane Zuckerman
je désire inscrire une commande SED pour ajouter du texte à la
première ligne
d'un fichier. Lorsque je regarde les exemples dans mon livre, j'y vois
seulement des scripts .sed . Or, je veux tout simplement inscrire une ligne
sed dans mon script .sh.



#!/bin/sh

#
# instructions shell
# ...
# ...

sed -e 'regexp' < in > out

# autres instructions ...

En fait, je comprends mal la question. :-)

--
"Je deteste les ordinateurs : ils font toujours ce que je dis, jamais ce
que je veux !"
"The obvious mathematical breakthrough would be development of an easy
way to factor large prime numbers." (Bill Gates, The Road Ahead)

Avatar
Laurent Wacrenier
Christian Théroux écrit:
je désire inscrire une commande SED pour ajouter du texte à la
première ligne


Pourquoi utiliser sed ?
(echo toto; cat fichier) > résultat

Avatar
Pascal Bourguignon
"Christian Théroux" writes:

Bonjour
je désire inscrire une commande SED pour ajouter du texte à la
première ligne
d'un fichier. Lorsque je regarde les exemples dans mon livre, j'y vois
seulement des scripts .sed . Or, je veux tout simplement inscrire une ligne
sed dans mon script .sh.

Des suggestions?


Oui.

sed <<EOF
ligne1
ligne2
ligne3
EOF

ou:

cat >file.sed <<EOF
ligne1
ligne2
ligne3
EOF
sed -f file.sed


sont équivalents à:

sed -e ligne1 -e ligne2 -e ligne3 # (avec les échapements adéquat).


Donc:

sed -e '1s/$/ajout/' < input

--
__Pascal Bourguignon__ http://www.informatimago.com/

The world will now reboot. don't bother saving your artefacts.

Avatar
Christian Théroux
à vrai dire, ce n'est pas seulement une phrase normale comme "toto aime le
soleil" que je dois inscrire mais je dois filtrer des informations venant
d'autres fichiers et les insérer sur une ligne dans le fichier en question
exemple: je veux inscrire :
samoisettec, "|/usr/bin/vacation -a chantale.samoisette samoisettec"

donc je dois récupérer les infos via une variable pour le username et le
début
du nom

Pour le formatage de la ligne, je devrais être capable de le faire mais mon
problème c'est que je ne sais pas comment lancer une commande SED dans un
script "bash" ...
(je commence en matière de awk ou sed depuis hier)

merci



"Christian Théroux" a écrit dans le message de
news: 3jxwe.9092$
Bonjour
je désire inscrire une commande SED pour ajouter du texte à la
première ligne
d'un fichier. Lorsque je regarde les exemples dans mon livre, j'y vois
seulement des scripts .sed . Or, je veux tout simplement inscrire une
ligne sed dans mon script .sh.

Des suggestions?

merci

Chris





Avatar
Pascal Bourguignon
Laurent Wacrenier <lwa@ teaser . fr> writes:

Christian Théroux écrit:
je désire inscrire une commande SED pour ajouter du texte à la
première ligne


Pourquoi utiliser sed ?
(echo toto; cat fichier) > résultat


Ce n'est pas la même chose: ça n'ajoute pas du texte à la première
ligne, ça insère une nouvelle première ligne!


--
__Pascal Bourguignon__ http://www.informatimago.com/

The world will now reboot. don't bother saving your artefacts.


Avatar
Christian Théroux
merci pour la commande, je vais tenter de l'executer,

je t'en redonne des nouvelles
"Christian Théroux" a écrit dans le message de
news: apywe.9545$
à vrai dire, ce n'est pas seulement une phrase normale comme "toto aime le
soleil" que je dois inscrire mais je dois filtrer des informations venant
d'autres fichiers et les insérer sur une ligne dans le fichier en question
exemple: je veux inscrire :
samoisettec, "|/usr/bin/vacation -a chantale.samoisette samoisettec"

donc je dois récupérer les infos via une variable pour le username et le
début
du nom

Pour le formatage de la ligne, je devrais être capable de le faire mais
mon problème c'est que je ne sais pas comment lancer une commande SED dans
un script "bash" ...
(je commence en matière de awk ou sed depuis hier)

merci



"Christian Théroux" a écrit dans le message
de news: 3jxwe.9092$
Bonjour
je désire inscrire une commande SED pour ajouter du texte à la
première ligne
d'un fichier. Lorsque je regarde les exemples dans mon livre, j'y vois
seulement des scripts .sed . Or, je veux tout simplement inscrire une
ligne sed dans mon script .sh.

Des suggestions?

merci

Chris









Avatar
Laurent Wacrenier
Pascal Bourguignon écrit:
Pourquoi utiliser sed ?
(echo toto; cat fichier) > résultat


Ce n'est pas la même chose: ça n'ajoute pas du texte à la première
ligne, ça insère une nouvelle première ligne!


(echo toto; sed 1d fichier) > résultat


Avatar
Pascal Bourguignon
Laurent Wacrenier <lwa@ teaser . fr> writes:

Pascal Bourguignon écrit:
Pourquoi utiliser sed ?
(echo toto; cat fichier) > résultat


Ce n'est pas la même chose: ça n'ajoute pas du texte à la première
ligne, ça insère une nouvelle première ligne!


(echo toto; sed 1d fichier) > résultat


Ce n'est pas la même chose: ça n'ajoute pas du texte à la première
ligne, ça remplace la première ligne par autre chose!


--
__Pascal Bourguignon__ http://www.informatimago.com/

Nobody can fix the economy. Nobody can be trusted with their finger
on the button. Nobody's perfect. VOTE FOR NOBODY.



Avatar
cedric
Pascal Bourguignon wrote:
Laurent Wacrenier <lwa@ teaser . fr> writes:


Pascal Bourguignon écrit:

Pourquoi utiliser sed ?
(echo toto; cat fichier) > résultat


Ce n'est pas la même chose: ça n'ajoute pas du texte à la première
ligne, ça insère une nouvelle première ligne!


(echo toto; sed 1d fichier) > résultat



Ce n'est pas la même chose: ça n'ajoute pas du texte à la première
ligne, ça remplace la première ligne par autre chose!


(echo -n toto; cat fichier) > resultat

ouf !




Avatar
Pascal Bourguignon
cedric writes:

Pascal Bourguignon wrote:
Laurent Wacrenier <lwa@ teaser . fr> writes:

Pascal Bourguignon écrit:

Pourquoi utiliser sed ?
(echo toto; cat fichier) > résultat


Ce n'est pas la même chose: ça n'ajoute pas du texte à la première
ligne, ça insère une nouvelle première ligne!


(echo toto; sed 1d fichier) > résultat
Ce n'est pas la même chose: ça n'ajoute pas du texte à la première

ligne, ça remplace la première ligne par autre chose!


(echo -n toto; cat fichier) > resultat

ouf !


D'habitude, on ajoute à la fin, on n'insère pas au début...

Je ne comprend pas pourquoi tu insiste; ma solution ne te plait pas?

ajout=toto
sed -e "1s/$/${ajout}/" < input > output


--
__Pascal Bourguignon__ http://www.informatimago.com/

There is no worse tyranny than to force a man to pay for what he does not
want merely because you think it would be good for him. -- Robert Heinlein





1 2