[Linux-Shell-scripting] commande cat ou sed ?
Fermé
Hitchy
-
7 avril 2005 à 16:41
Castor Messages postés 17858 Date d'inscription mardi 3 juillet 2001 Statut Modérateur Dernière intervention 7 novembre 2023 - 26 août 2009 à 12:10
Castor Messages postés 17858 Date d'inscription mardi 3 juillet 2001 Statut Modérateur Dernière intervention 7 novembre 2023 - 26 août 2009 à 12:10
A voir également:
- Cat and sed
- Disk boot failure insert system disk and press enter - Guide
- Mouse and keyboard recorder - Télécharger - Divers Utilitaires
- Automatic mouse and keyboard - Télécharger - Divers Utilitaires
- Reboot and select proper boot device or insert boot media in selected boot device and press a key ✓ - Forum PC portable
- Spybot search and destroy français gratuit - Télécharger - Antivirus & Antimalwares
10 réponses
Castor
Messages postés
17858
Date d'inscription
mardi 3 juillet 2001
Statut
Modérateur
Dernière intervention
7 novembre 2023
170
7 avril 2005 à 17:07
7 avril 2005 à 17:07
il faut "echapper" les caracteres speciaux de ta configuration avec des "\"
par exemple $toto deviens \$toto
par exemple $toto deviens \$toto
OK merci pour les caractères spéciaux mais pour le reste du texte
Voilà la partie du script qui me pose problème :
-----------------------------------
#!/bin/sh
#
cat >>essai.conf
"bonjour ceci est une ligne avec \$unevariable
EOF
------------------------------------
1)Il crée bien le fichier essai.conf, mais il n'y a rien dedans
J'ai essayé en passant par la commande echo, mais toujours rien dans mon fichier.
2)Il ne prend pas en compte le EOF, cad que je suis obligé de faire le ctrl-d manuellemnt pour quitter cat
Je pense que ça tient à pas grand chose....
Voilà la partie du script qui me pose problème :
-----------------------------------
#!/bin/sh
#
cat >>essai.conf
"bonjour ceci est une ligne avec \$unevariable
EOF
------------------------------------
1)Il crée bien le fichier essai.conf, mais il n'y a rien dedans
J'ai essayé en passant par la commande echo, mais toujours rien dans mon fichier.
2)Il ne prend pas en compte le EOF, cad que je suis obligé de faire le ctrl-d manuellemnt pour quitter cat
Je pense que ça tient à pas grand chose....
Castor
Messages postés
17858
Date d'inscription
mardi 3 juillet 2001
Statut
Modérateur
Dernière intervention
7 novembre 2023
170
7 avril 2005 à 17:43
7 avril 2005 à 17:43
essaie ca:
cat "bonjour ceci est une ligne avec \$unevariable >>essai.conf
Merci castor, mais ça ne fonctionne pas non plus....
J'ai essayé :
cat
"bonjour ceci est une ligne avec \$unevariable >>essai.conf
cat
"bonjour ceci est une ligne avec \$unevariable" >>essai.conf
j'ai même essayer de remplacer les "" par des ( ) ou {} ou ' ' ou `` ou encore [] mais rien du tout.....
Si il y a des gens qui ont des idées....peut être avec sed..?
Juste pour info, j'ai plusieurs lignes à insérer.
J'ai essayé :
cat
"bonjour ceci est une ligne avec \$unevariable >>essai.conf
cat
"bonjour ceci est une ligne avec \$unevariable" >>essai.conf
j'ai même essayer de remplacer les "" par des ( ) ou {} ou ' ' ou `` ou encore [] mais rien du tout.....
Si il y a des gens qui ont des idées....peut être avec sed..?
Juste pour info, j'ai plusieurs lignes à insérer.
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
7 avril 2005 à 18:05
7 avril 2005 à 18:05
Salut,
Essaie ça :
Essaie ça :
[jp@Mandrake tmpfs]$ echo "Ceci est une variable : \$var." >> essai.conf [jp@Mandrake tmpfs]$ cat essai.conf Ceci est une variable : $var. [jp@Mandrake tmpfs]$ echo "Ceci est une autre variable : \$var2." >> essai.conf [jp@Mandrake tmpfs]$ cat essai.conf Ceci est une variable : $var. Ceci est une autre variable : $var2. [jp@Mandrake tmpfs]$;-))
Nickel !!!!
C'est exactement ce doit j'avais besoin.
Sauf que je n'ai pas eu à mettre le "\" devant mes variables.
Est ce parce que ce sont des adresses IP ? je ne sais pas.
Mes lignes dans mon script ressemble desormais à cela :
echo "Ceci est une autre variable : $var2 ." >> essai.conf
Pour info, sur une ligne, j'ai 2 variables(@IP) collé par un tiret "-",
j'ai du noter comme cela :
echo "blabla ${IPDESTINATAIRE}-${IPLOCALE} blabla" >>essai.conf
Merci pour tout, tu m'as enlevé une grande épine du pied !!!
C'est exactement ce doit j'avais besoin.
Sauf que je n'ai pas eu à mettre le "\" devant mes variables.
Est ce parce que ce sont des adresses IP ? je ne sais pas.
Mes lignes dans mon script ressemble desormais à cela :
echo "Ceci est une autre variable : $var2 ." >> essai.conf
Pour info, sur une ligne, j'ai 2 variables(@IP) collé par un tiret "-",
j'ai du noter comme cela :
echo "blabla ${IPDESTINATAIRE}-${IPLOCALE} blabla" >>essai.conf
Merci pour tout, tu m'as enlevé une grande épine du pied !!!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Xenor
Messages postés
3312
Date d'inscription
dimanche 11 août 2002
Statut
Contributeur
Dernière intervention
22 juin 2015
51
8 avril 2005 à 11:10
8 avril 2005 à 11:10
Salut,
Si tu mets pas de \ devant les $, il va afficher le contenu de la variable, et non pas son nom. Ou alors il faut remplacer les " par des simple '.
Mais apparemment ça te satisfait donc ça roule.
Pour info, et si tu poursuis ton travail dans cette voie, d'autre options très utiles peuvent te servir : les arguments -n et -e pour la commande echo. A explorer.
Si tu mets pas de \ devant les $, il va afficher le contenu de la variable, et non pas son nom. Ou alors il faut remplacer les " par des simple '.
Mais apparemment ça te satisfait donc ça roule.
Pour info, et si tu poursuis ton travail dans cette voie, d'autre options très utiles peuvent te servir : les arguments -n et -e pour la commande echo. A explorer.
np34
Messages postés
21
Date d'inscription
samedi 12 mars 2005
Statut
Membre
Dernière intervention
9 novembre 2005
5
8 avril 2005 à 13:50
8 avril 2005 à 13:50
il y a beaucoup plus simple en shell pour insérer du text dans un autre fichier :
Voilou
cat > fichier_à_créer << BALISEDEFIN ici tu mets tout le contenu du fichier_à_créer formaté comme tu veux voila c'est tout bon BALISEDEFIN
Voilou
j'ai un script executable sur mon pc mai pas avec des autres il lence un programme et il affiche le signal d'interruption
#!/bin/bash
cat /usr/include/asm/signal.h | grep "define SIG" | awk '{ print $2 " " $NF }'
./ton_programme_c.c
le program est
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
void sigfpe_handler(int signum)
{
printf("Exception détectée!\n");
exit(EXIT_FAILURE);
}
int main(void)
{
struct sigaction new_action;
new_action.sa_handler = sigfpe_handler;
sigemptyset(&new_action.sa_mask);
sigaction(SIGFPE, &new_action, NULL);
int a, b, c;
a = 10; b=0;
c = a/b;
return EXIT_SUCCESS;
}
#!/bin/bash
cat /usr/include/asm/signal.h | grep "define SIG" | awk '{ print $2 " " $NF }'
./ton_programme_c.c
le program est
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
void sigfpe_handler(int signum)
{
printf("Exception détectée!\n");
exit(EXIT_FAILURE);
}
int main(void)
{
struct sigaction new_action;
new_action.sa_handler = sigfpe_handler;
sigemptyset(&new_action.sa_mask);
sigaction(SIGFPE, &new_action, NULL);
int a, b, c;
a = 10; b=0;
c = a/b;
return EXIT_SUCCESS;
}
dubcek
Messages postés
18765
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
20 février 2025
5 626
22 janv. 2008 à 09:05
22 janv. 2008 à 09:05
hello
cat /usr/include/asm/signal.h | grep "define SIG" | awk '{ print $2 " " $NF }'
peut être simplifié:
awk '/define SIG/ { print $2 " " $NF }' /usr/include/asm/signal.h
tu essayes d'exécuter le source .c ou ton prog. est-il compilé ?
./ton_programme_c.c
cat /usr/include/asm/signal.h | grep "define SIG" | awk '{ print $2 " " $NF }'
peut être simplifié:
awk '/define SIG/ { print $2 " " $NF }' /usr/include/asm/signal.h
tu essayes d'exécuter le source .c ou ton prog. est-il compilé ?
./ton_programme_c.c
dubcek
Messages postés
18765
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
20 février 2025
5 626
22 janv. 2008 à 10:46
22 janv. 2008 à 10:46
correction du post 11
awk '/define SIG/ { print $2 " " $NF }' < /usr/include/asm/signal.h
awk '/define SIG/ { print $2 " " $NF }' < /usr/include/asm/signal.h
25 août 2009 à 18:46
Bon... Manque de pot, je cherchais les dits caractères qu'il faut échapper dans les paramètres de commandes Linux. Exemple :
Désolé pour le voyage dans le temps :P
26 août 2009 à 12:10
Soit tu parses ton MdP_avec_pleins_de_caract_à_échapper_mais_lesquels? avec sed et tu remplaces les caracteresspéciaux (en général c'est $,/,\,#,?,*,.,>,< mais je peux en oublier)
Soit tu encadres ton MdP_avec_pleins_de_caract_à_échapper_mais_lesquels par des '' ou des ""