Sed awk
Résolu/Fermé
A voir également:
- Sed awk
- Awk strftime - Forum Shell
- Remplacez le mot sed par le mot mais dans tout le texte. combien de caractères contient le document suite à cette modification (en incluant les espaces) ? ✓ - Forum Shell
- Sed crlf - Astuces et Solutions
- Sed windows - Forum Linux / Unix
- Sed supprimer retour chariot ✓ - Forum Programmation
8 réponses
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 567
12 déc. 2007 à 21:48
12 déc. 2007 à 21:48
Salut,
quoi, t'es allergique à Perl ;-DDDD ?!
quoi, t'es allergique à Perl ;-DDDD ?!
lami20j@debserv:~/trash$ cat fichier cinq1;Dupond;jean;jdupond;jdupond cinq1;valjean,jean;jvaljean,jvaljean lami20j@debserv:~/trash$ sed -r '1 s/(.*;)(.*)/\1pass/' fichier > temp lami20j@debserv:~/trash$ cat temp cinq1;Dupond;jean;jdupond;pass cinq1;valjean,jean;jvaljean,jvaljean
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 895
12 déc. 2007 à 23:12
12 déc. 2007 à 23:12
Salut,
$ cat plop cinq1;Dupond;jean;jdupond;jdupond cinq1;valjean,jean;jvaljean,jvaljean $ sed '/jdupond/ s//pass/2' plop cinq1;Dupond;jean;jdupond;pass cinq1;valjean,jean;jvaljean,jvaljean $;-))
dubcek
Messages postés
18718
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
22 mars 2024
5 615
13 déc. 2007 à 09:54
13 déc. 2007 à 09:54
hello
awk -F ";" '/jdupond/ { $5="pass" ; print $0 }' < /emplacement du fichier > /fichier provisoire
awk -F ";" '/jdupond/ { $5="pass" ; print $0 }' < /emplacement du fichier > /fichier provisoire
Merci de votre aide rapide, mais vos réponses ne me satisfont pas pleinement. Je pense n'avoir pas été assez clair. Le fichier pourrait être :
cinq1;jean;valjean;jvaljean;jvaljean
cinq1;cosette;tenardier;ctenard;ctenard
cinq1;louis;seize;lseize;toto
la commande pour laquelle je demande de l'aide sera contenue dans un script et devra me permettre de changer les mot de passe.
votre premiere proposition modifie toujours le premier mot de passe, si je met ctenard comme login, il me change celui de la premiere ligne.
La seconde modifie toujours la deuxieme occurance, mais parfois c'est la premiere et ça peut etre la 3eme ou quatriemme.
la troisieme me donne un fichier temporaire vide.
je pense que grace à vous on est pas loin mais j'ai encore besoin d'un peu d'aide.
merci
Reduuxx
cinq1;jean;valjean;jvaljean;jvaljean
cinq1;cosette;tenardier;ctenard;ctenard
cinq1;louis;seize;lseize;toto
la commande pour laquelle je demande de l'aide sera contenue dans un script et devra me permettre de changer les mot de passe.
votre premiere proposition modifie toujours le premier mot de passe, si je met ctenard comme login, il me change celui de la premiere ligne.
La seconde modifie toujours la deuxieme occurance, mais parfois c'est la premiere et ça peut etre la 3eme ou quatriemme.
la troisieme me donne un fichier temporaire vide.
je pense que grace à vous on est pas loin mais j'ai encore besoin d'un peu d'aide.
merci
Reduuxx
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 895
13 déc. 2007 à 18:08
13 déc. 2007 à 18:08
Re-
Ben on a fait selon ce que tu demandais dans ton 1er post et en fonction de ce que tu avais fourni comme explications...
Bon pour faire ce que tu veux, il suffit de modifier un peu la syntaxe de "lami20j" (au choix):
Ben on a fait selon ce que tu demandais dans ton 1er post et en fonction de ce que tu avais fourni comme explications...
Bon pour faire ce que tu veux, il suffit de modifier un peu la syntaxe de "lami20j" (au choix):
sed -r '/ctenard/ s/(.*;).*/\1pass/' fichier > temp sed -r '/tenardier/ s/(.*;).*/\1pass/' fichier > temp sed -r '/cosette/ s/(.*;).*/\1pass/' fichier > temp sed -r '2 s/(.*;).*/\1pass/' fichier > temp;-))
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Merci pour l'aide,
il ne me reste qu'une petite amélioration.
sed -r '/ctenard/ s/(.*;).*/\1pass/' fichier > temp
ceci fonctionne mais comment inclure des variables aux lieu et place de ctenard et pass ?
en mettant respectivement $login et $pass, le script ne fonctionne plus (je suis sur de mes variables car d'autres parties de mon script y font appel et fonctionnent)
encore merci
Reduuxx
il ne me reste qu'une petite amélioration.
sed -r '/ctenard/ s/(.*;).*/\1pass/' fichier > temp
ceci fonctionne mais comment inclure des variables aux lieu et place de ctenard et pass ?
en mettant respectivement $login et $pass, le script ne fonctionne plus (je suis sur de mes variables car d'autres parties de mon script y font appel et fonctionnent)
encore merci
Reduuxx
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 567
18 déc. 2007 à 20:00
18 déc. 2007 à 20:00
Salut,
lami20j@debserv:~/trash$ cat fichier
cinq1;Dupond;jean;jdupond;jdupond
cinq1;valjean,jean;jvaljean,jvaljean
lami20j@debserv:~/trash$ user=jdupond
lami20j@debserv:~/trash$ password=pass
lami20j@debserv:~/trash$ sed -r "/$user/ s/(.*;).*/\1$password/" fichier > temp
lami20j@debserv:~/trash$ cat fichier
cinq1;Dupond;jean;jdupond;jdupond
cinq1;valjean,jean;jvaljean,jvaljean
lami20j@debserv:~/trash$ cat temp
cinq1;Dupond;jean;jdupond;pass
cinq1;valjean,jean;jvaljean,jvaljean
lami20j@debserv:~/trash$
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 895
18 déc. 2007 à 20:02
18 déc. 2007 à 20:02
;-))
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 895
18 déc. 2007 à 20:01
18 déc. 2007 à 20:01
Alors au choix, soit tu double-quote l'expression entière :
sed -r "/$ctenard/ s/(.*;).*/\1$pass/" fichier > tempsoit avec des quotes simples :
sed -r '/'"$ctenard"'/ s/(.*;).*/\1'"$pass"'/' fichier > temp;-))
Bonjour
gràce à votre aide plus de soucis.
Si j'osais, je demanderai juste une dernière chose :
pourriez vous expliciter les diférents éléments qui composent cette ligne de commande sed car j'avou ne pas tout saisir.
Je ne sais pas comment mettre résolu mais si quelqu'un veut le faire, allez y.
ENCORE MERCI
Reduuxx
gràce à votre aide plus de soucis.
Si j'osais, je demanderai juste une dernière chose :
pourriez vous expliciter les diférents éléments qui composent cette ligne de commande sed car j'avou ne pas tout saisir.
Je ne sais pas comment mettre résolu mais si quelqu'un veut le faire, allez y.
ENCORE MERCI
Reduuxx