Recherche d'une valeur absolut et non relativ
bheadman
Messages postés
105
Date d'inscription
Statut
Membre
Dernière intervention
-
bheadman Messages postés 105 Date d'inscription Statut Membre Dernière intervention -
bheadman Messages postés 105 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Bon pour commencer ce que j'entends par valeur absolu/relative
Absolu :
Si je cherche toto dans un fichier je veux trouver "toto" et pas les ligne "toto32" "totomobile" "*toto*"
relative :
l'inverse de au-dessus :D
Donc voila le but de la maneuvre est de supprimer des users dans /etc/passwd ainsi que dans un autre fichier utilisant le même "login" (si passwd contiens ndupont:x:.... l'autre fichier contiens ndupont|info1|info2|...).
Mais le problème c'est que ces fichiers contiennent des "doublons renommés" :
si "ndupont" existe en double alors le 2ème s'appelle "ndupont2" (exemple : nicolas dupont et natalie dupont = ndupont).
Donc si je veux supprimer ndupont et pas ndupont2 je suis bloqué.
voici mon script actuellement :
# cat supp.sh
#!/bin/sh
####
# Definition des variables
####
User_Liste=`cat ./liste.txt`
Now=`date +%y%m%d-%H%M`
####
#Sauvegarde des fichier d'origine pour archivage
####
cp -f /Nicolas_test/passwd /Nicolas_test/passwd.bak.${Now}
cp -f /Nicolas_test/aut_base /Nicolas_test/aut_base.bak.${Now}
####
# Debut de la suppression des compte
####
for User in ${User_Liste}
do
sed '/'"${User}"':/d' /Nicolas_test/passwd > /Nicolas_test/passwd_temp
sed '/'"${User}"'\|/d' /Nicolas_test/aut_base > /Nicolas_test/aut_base_temp
mv -f /Nicolas_test/passwd_temp /Nicolas_test/passwd
mv -f /Nicolas_test/aut_base_temp /Nicolas_test/aut_base
done
####
#fin
####
Pour info je suis bloqué sur un vieux système unix et je n'ai que du "sh" sous la main. (pour exemple le sed que j'utilise ne connais même pas l'option "-i" ce qui m'oblige à faire tout ce mic-mac de fichier temp et de copie)
Je suis ouvert à toute proposition et reste à votre disposition en cas de question.
Cordialement.
BHeaDMaN (Nicolas :D)
Bon pour commencer ce que j'entends par valeur absolu/relative
Absolu :
Si je cherche toto dans un fichier je veux trouver "toto" et pas les ligne "toto32" "totomobile" "*toto*"
relative :
l'inverse de au-dessus :D
Donc voila le but de la maneuvre est de supprimer des users dans /etc/passwd ainsi que dans un autre fichier utilisant le même "login" (si passwd contiens ndupont:x:.... l'autre fichier contiens ndupont|info1|info2|...).
Mais le problème c'est que ces fichiers contiennent des "doublons renommés" :
si "ndupont" existe en double alors le 2ème s'appelle "ndupont2" (exemple : nicolas dupont et natalie dupont = ndupont).
Donc si je veux supprimer ndupont et pas ndupont2 je suis bloqué.
voici mon script actuellement :
# cat supp.sh
#!/bin/sh
####
# Definition des variables
####
User_Liste=`cat ./liste.txt`
Now=`date +%y%m%d-%H%M`
####
#Sauvegarde des fichier d'origine pour archivage
####
cp -f /Nicolas_test/passwd /Nicolas_test/passwd.bak.${Now}
cp -f /Nicolas_test/aut_base /Nicolas_test/aut_base.bak.${Now}
####
# Debut de la suppression des compte
####
for User in ${User_Liste}
do
sed '/'"${User}"':/d' /Nicolas_test/passwd > /Nicolas_test/passwd_temp
sed '/'"${User}"'\|/d' /Nicolas_test/aut_base > /Nicolas_test/aut_base_temp
mv -f /Nicolas_test/passwd_temp /Nicolas_test/passwd
mv -f /Nicolas_test/aut_base_temp /Nicolas_test/aut_base
done
####
#fin
####
Pour info je suis bloqué sur un vieux système unix et je n'ai que du "sh" sous la main. (pour exemple le sed que j'utilise ne connais même pas l'option "-i" ce qui m'oblige à faire tout ce mic-mac de fichier temp et de copie)
Je suis ouvert à toute proposition et reste à votre disposition en cas de question.
Cordialement.
BHeaDMaN (Nicolas :D)
A voir également:
- Recherche d'une valeur absolut et non relativ
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Comment faire une recherche à partir d'une photo - Guide
- Je recherche une chanson - Guide
- Rechercher ou entrer l'adresse mm - recherche google - Guide
- Recherche de pairs utorrent ✓ - Forum Téléchargement
2 réponses
dans /etc/passwd rechercher ^ndupont: pour ne trouver que l'utilisateur ndupont
je n'ai pas bien compris le format du 2ème fichier
je n'ai pas bien compris le format du 2ème fichier
Salut,
Il te faut regarder du côté des expressions régulières matchant une limite de mots (man grep) :
Il te faut regarder du côté des expressions régulières matchant une limite de mots (man grep) :
[tmpfs]$ cat fichier.txt ndupont:x:501:501:blabla:bla:/bin/bash ndupont2:x:501:501:blabla:bla:/bin/bash nbondupont:x:501:501:blabla:bla:/bin/bash ndupontel:x:501:501:blabla:bla:/bin/bash ndupont3:x:501:501:blabla:bla:/bin/bash [tmpfs]$ grep 'ndupont' fichier.txt ndupont:x:501:501:blabla:bla:/bin/bash ndupont2:x:501:501:blabla:bla:/bin/bash nbondupont:x:501:501:blabla:bla:/bin/bash ndupontel:x:501:501:blabla:bla:/bin/bash ndupont3:x:501:501:blabla:bla:/bin/bash [tmpfs]$ grep 'ndupont\b' fichier.txt ndupont:x:501:501:blabla:bla:/bin/bash nbondupont:x:501:501:blabla:bla:/bin/bash [tmpfs]$ grep '\bndupont\b' fichier.txt ndupont:x:501:501:blabla:bla:/bin/bash [tmpfs]$sed utilise la même syntaxe, par contre il faut voir en fonction de la version...
[tmpfs]$ sed -n '/ndupont/p' fichier.txt ndupont:x:501:501:blabla:bla:/bin/bash ndupont2:x:501:501:blabla:bla:/bin/bash nbondupont:x:501:501:blabla:bla:/bin/bash ndupontel:x:501:501:blabla:bla:/bin/bash ndupont3:x:501:501:blabla:bla:/bin/bash [tmpfs]$ sed -n '/ndupont\b/p' fichier.txt ndupont:x:501:501:blabla:bla:/bin/bash nbondupont:x:501:501:blabla:bla:/bin/bash [tmpfs]$ sed -n '/\bndupont\b/p' fichier.txt ndupont:x:501:501:blabla:bla:/bin/bash [tmpfs]$
ndupont|local|nom_server|base
Avec un pipe " | " comme séparateur et je le protège avec un "\" pour qu"il ne soit pas interprété mais pris en compte comme un simple caratère