Commande SED
Résolu
Stef60
Messages postés
251
Date d'inscription
Statut
Membre
Dernière intervention
-
Stef60 Messages postés 251 Date d'inscription Statut Membre Dernière intervention -
Stef60 Messages postés 251 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
je bloque sur un probleme qui doit etre simple à regler.
j'ai besoin d'ajouter une ligne vierge avant un motif.
J'ai créé un script dans lequel il y a ces lignes:
sed -i '/\[\//i\'"$1"'R = ' /usr/fichier.txt
sed -i '/\[\//i\'"$1"'W = '/usr/fichier.txt
resultat de mon fichier.txt
si $1 = toto
totoR =
totoW =
[/]
je voudrais obtenir ca:
totoR =
totoW =
[/]
De plus, c'est normal que la commande SED ajoute des sauts de ligne en fin de fichier ?
D'avance Merci
je bloque sur un probleme qui doit etre simple à regler.
j'ai besoin d'ajouter une ligne vierge avant un motif.
J'ai créé un script dans lequel il y a ces lignes:
sed -i '/\[\//i\'"$1"'R = ' /usr/fichier.txt
sed -i '/\[\//i\'"$1"'W = '/usr/fichier.txt
resultat de mon fichier.txt
si $1 = toto
totoR =
totoW =
[/]
je voudrais obtenir ca:
totoR =
totoW =
[/]
De plus, c'est normal que la commande SED ajoute des sauts de ligne en fin de fichier ?
D'avance Merci
A voir également:
- Commande SED
- Invite de commande - Guide
- Commande terminal mac - Guide
- Commande dism - Guide
- Diskpart commande - Guide
- Commande scannow - Guide
13 réponses
Salut,
En espérant avoir bien compris ta demande...
En espérant avoir bien compris ta demande...
$ cat plop blabla blablabla blablaba [/] $ sed '\|[/]| i\ \ '"$1"'R =\ '"$1"'W =\ ' plop blabla blablabla blablaba totoR = totoW = [/] $Si ça marche, rajoute l'option "-i" ;-))
Merci de ton retour.
J'ai du mal à comprendre comment utiliser ce que tu me donnes.
j'ai modifié mon script avec ca :
sed -i '\|[/]| i\'"$1"'R = \ '"$1"'W = \' /usr/fichier.txt
Mais ca fonctionne encore moins bien qu'avec 2 lignes.
j'obtiens ca: $1 = toto
totoR = totoW =
[/]
plus aucun saut de ligne
J'ai du mal à comprendre comment utiliser ce que tu me donnes.
j'ai modifié mon script avec ca :
sed -i '\|[/]| i\'"$1"'R = \ '"$1"'W = \' /usr/fichier.txt
Mais ca fonctionne encore moins bien qu'avec 2 lignes.
j'obtiens ca: $1 = toto
totoR = totoW =
[/]
plus aucun saut de ligne
Ne te sers de l'oprion "-i" qu'une fois que ta syntaxe marchera !!!
sed '\|[/]| i\\n'"$1"'R =\n'"$1"'W = \n';-))
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
le voici:
#!/bin/sh
# ce script va permettre de :
# - creer un repository
# - changer le proprietaire et le groupe du repository en $USER
# - chmoder le repository en 771
# le user de Apache est :
USER=svn
if [ $# = 1 ]
then
/usr/local/subversion-1.3.1/bin/svnadmin create /svn/$1
chown -R $USER.$USER /svn/$1
chmod -R 771 /svn/$1
echo repository fonctionnel.
echo "" >> /svn/permissions.txt
sed '\|[/]| i\\n'"$1"'R =\n'"$1"'W = \n' /svn/permissions.txt
echo "["$1":/]" >> /svn/permissions.txt
echo "@Adm = rw" >> /svn/permissions.txt
echo "* =" >> /svn/permissions.txt
echo "" >> /svn/permissions.txt
echo "["$1":/branches]" >> /svn/permissions.txt
echo "@Adm = rw" >> /svn/permissions.txt
echo "@"$1"R = r" >> /svn/permissions.txt
echo "@"$1"W = rw" >> /svn/permissions.txt
echo "* =" >> /svn/permissions.txt
echo "" >> /svn/permissions.txt
echo "["$1":/tags]" >> /svn/permissions.txt
echo "@Adm = rw" >> /svn/permissions.txt
echo "@"$1"R = r" >> /svn/permissions.txt
echo "@"$1"W = rw" >> /svn/permissions.txt
echo "* =" >> /svn/permissions.txt
echo "" >> /svn/permissions.txt
echo "["$1":/trunk]" >> /svn/permissions.txt
echo "@Adm = rw" >> /svn/permissions.txt
echo "@"$1"R = r" >> /svn/permissions.txt
echo "@"$1"W = rw" >> /svn/permissions.txt
echo "* =" >> /svn/permissions.txt
echo "" >> /svn/permissions.txt
else
echo nombre d\'argument incorrect.
echo usage: svncreate /svn/repository
fi
#!/bin/sh
# ce script va permettre de :
# - creer un repository
# - changer le proprietaire et le groupe du repository en $USER
# - chmoder le repository en 771
# le user de Apache est :
USER=svn
if [ $# = 1 ]
then
/usr/local/subversion-1.3.1/bin/svnadmin create /svn/$1
chown -R $USER.$USER /svn/$1
chmod -R 771 /svn/$1
echo repository fonctionnel.
echo "" >> /svn/permissions.txt
sed '\|[/]| i\\n'"$1"'R =\n'"$1"'W = \n' /svn/permissions.txt
echo "["$1":/]" >> /svn/permissions.txt
echo "@Adm = rw" >> /svn/permissions.txt
echo "* =" >> /svn/permissions.txt
echo "" >> /svn/permissions.txt
echo "["$1":/branches]" >> /svn/permissions.txt
echo "@Adm = rw" >> /svn/permissions.txt
echo "@"$1"R = r" >> /svn/permissions.txt
echo "@"$1"W = rw" >> /svn/permissions.txt
echo "* =" >> /svn/permissions.txt
echo "" >> /svn/permissions.txt
echo "["$1":/tags]" >> /svn/permissions.txt
echo "@Adm = rw" >> /svn/permissions.txt
echo "@"$1"R = r" >> /svn/permissions.txt
echo "@"$1"W = rw" >> /svn/permissions.txt
echo "* =" >> /svn/permissions.txt
echo "" >> /svn/permissions.txt
echo "["$1":/trunk]" >> /svn/permissions.txt
echo "@Adm = rw" >> /svn/permissions.txt
echo "@"$1"R = r" >> /svn/permissions.txt
echo "@"$1"W = rw" >> /svn/permissions.txt
echo "* =" >> /svn/permissions.txt
echo "" >> /svn/permissions.txt
else
echo nombre d\'argument incorrect.
echo usage: svncreate /svn/repository
fi
Tu peux afficher tes tests aussi (en rapport avec ton post #5), fichiers + commandes + résultats.
Affiche aussi le résultat de la commande "cat -A /usr/fichier.txt" s'il ta plaît, merci.
Affiche aussi le résultat de la commande "cat -A /usr/fichier.txt" s'il ta plaît, merci.
fichier de depart:
[groups]
Adm =
[/]
@Adm = rw
* =
--------------------------------------------------------------------------- (juste pour separer, n'appartient pas au fichier)
cat -A /svn/permissions.txt
[groups]$
$
Adm = $
$
[/]$
@Adm = rw$
* =$
-----------------------------------------------------------------------------(juste pour separer, n'appartient pas au fichier)
sed '\|[/]| i\\n'"$1"'R =\n'"$1"'W = \n' /svn/permissions.txt
[groups]
Adm =
\nR =nW = n
[/]
@Adm = rw
* =
-----------------------------------------------------------------------------(juste pour separer, n'appartient pas au fichier)
idealement a la fin de mon script j'aimerai obtenir ca avec $1 = toto:
[groups]
Adm =
totoR =
totoW =
[/]
@Adm = rw
* =
[toto:/]
@Adm = rw
@totoR = r
@totoW = rw
* =
[groups]
Adm =
[/]
@Adm = rw
* =
--------------------------------------------------------------------------- (juste pour separer, n'appartient pas au fichier)
cat -A /svn/permissions.txt
[groups]$
$
Adm = $
$
[/]$
@Adm = rw$
* =$
-----------------------------------------------------------------------------(juste pour separer, n'appartient pas au fichier)
sed '\|[/]| i\\n'"$1"'R =\n'"$1"'W = \n' /svn/permissions.txt
[groups]
Adm =
\nR =nW = n
[/]
@Adm = rw
* =
-----------------------------------------------------------------------------(juste pour separer, n'appartient pas au fichier)
idealement a la fin de mon script j'aimerai obtenir ca avec $1 = toto:
[groups]
Adm =
totoR =
totoW =
[/]
@Adm = rw
* =
[toto:/]
@Adm = rw
@totoR = r
@totoW = rw
* =
Tiens j'ai juste modifié la syntaxe pour enlever le 1er saut de ligne :
Le 'cat -A" c'était justement pour afficher les caractères non-imprimables au cas ou ce seraient eux qui influençaient la non prise en compte des caractères "\n"...
$ cat steph [groups] Adm = [/] @Adm = rw * = $ sed '\|[/]| i'"$1"'R =\n'"$1"'W = \n' steph [groups] Adm = totoR = totoW = [/] @Adm = rw * = $Si ça marche pas je comprends pas pourquoi !? ;-\
Le 'cat -A" c'était justement pour afficher les caractères non-imprimables au cas ou ce seraient eux qui influençaient la non prise en compte des caractères "\n"...
ca ne fonctionne toujours pas
voici le resultat:
[groups]
Adm =
totoR =ntotoW = n
[/]
@Adm = rw
* =
ca fait 4 heures que je cherche, et avec \n ca n'a jamais marché.
soit il ecrit n ou \n mais pas de saut de ligne.
c'est pour cette raison que j'ai essayé ca:
sed -i '/\[\//i\{x;p;x}' /usr/fichier.txt
c'etait sensé ajouter une ligne vierge avant un motif
mais j'obtient le meme resultat : il m'ecrit {x;p;x}
voici le resultat:
[groups]
Adm =
totoR =ntotoW = n
[/]
@Adm = rw
* =
ca fait 4 heures que je cherche, et avec \n ca n'a jamais marché.
soit il ecrit n ou \n mais pas de saut de ligne.
c'est pour cette raison que j'ai essayé ca:
sed -i '/\[\//i\{x;p;x}' /usr/fichier.txt
c'etait sensé ajouter une ligne vierge avant un motif
mais j'obtient le meme resultat : il m'ecrit {x;p;x}