Sed : suppression insensible casse

Fermé
eZula Messages postés 3392 Date d'inscription samedi 26 avril 2008 Statut Contributeur Dernière intervention 8 mai 2021 - 9 janv. 2009 à 22:24
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 11 janv. 2009 à 16:57
Salut,

je souhaite effacer toutes les lignes d'un fichier qui ne commencent pas par

[HKEY_LOCAL_MACHINE\\SYSTEM


Pour cela j'utilise l'expression suivante :

sed "/^\[HKEY_LOCAL_MACHINE\\SYSTEM.*$/!d" fichier


Comment faire pour que cela fonctionne sans respect de la casse ? j'ai tenté avec !di ou encore i!d et il répond fermement " extra characters after command".

Est-il possible d'éviter de dénombrer toutes les combinaisons de caractères du genre [Hh][Kk][Ee][Yy].... ?

Merci

4 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 896
9 janv. 2009 à 23:11
Salut,

Le flag "I" (insensible à la casse) ne s'adapte qu'à la commande de substitution "s" malheureusement.

Une solution tout de même si c'est ou tout en majuscule ou tout en minuscule :
sed '/^\(\[HKEY_LOCAL_MACHINE\\SYSTEM\|\[hkey_local_machine\\system\)/!d'

0
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
10 janv. 2009 à 09:20
Salut,

Le flag "I" (insensible à la casse) ne s'adapte qu'à la commande de substitution "s" malheureusement.

Ben, en ce cas
je souhaite effacer toutes les lignes d'un fichier qui ne commencent pas par
Tu peux le faire en deux étapes :
- 1ère étape tu utilises s/// pour supprimer les chaînes qui ne commencent pas par ....
- 2ème étape tu supprimes les lignes vides

Comme ça il pourra utiliser le flag "i"
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 896 > lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019
10 janv. 2009 à 10:10
Salut,

Ben non malheureusement toujours pas ;-((

Il n'y a rien à substituer, seulement effacer les lignes ne correspondant pas au motif (d'où ma seconde proposition avec "grep -i", voir plus bas) et ça "sed" ne sait pas faire simplement ;-(
0
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 > jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020
10 janv. 2009 à 10:52
Re,

Il n'y a pas moyen de affiche le contraire de
 sed 's/^\[hkey_local_machine\\system//i' fic
?!
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 896 > lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019
10 janv. 2009 à 11:09
Le contraire je ne sais (crois) pas, mais en attendant ton idée m'a fait penser à un truc :
sed -n 's/^\[HKEY_LOCAL_MACHINE\\SYSTEM/&/Ip'
affiche toutes les lignes commençant par "[HKEY_LOCAL_MACHINE\SYSTEM" quelque soit la casse ;-))

Merci l'ami lami20j ;-)
0
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 > jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020
10 janv. 2009 à 11:30
Tu peux l'écrire dans la FAQ dans tes astuces SED

Affiche uniquement les lignes correspondant à un motif donné avec insensibilité à la case
0
eZula Messages postés 3392 Date d'inscription samedi 26 avril 2008 Statut Contributeur Dernière intervention 8 mai 2021 392
9 janv. 2009 à 23:22
Merci. Malheureusement il pourra s'agir également de
[HKEY_LOCAL_MACHINE\\SYSTEM
[HKEY_LOCAL_MACHINE\\System
[hkey_local_machine\\System
...


donc je crois que ce sera fatalement le schéma [Hh][Kk][Ee][Yy]
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 896
9 janv. 2009 à 23:34
grep -i '^\[HKEY_LOCAL_MACHINE\\SYSTEM' fichier > new_fich

0
eZula Messages postés 3392 Date d'inscription samedi 26 avril 2008 Statut Contributeur Dernière intervention 8 mai 2021 392
10 janv. 2009 à 10:16
grep c'est une bonne idée mais ça me contraindrait à l'ajouter avec ses dépendances à un programme qui en réalité est un batch dos

Mais au moins j'ai la certitude que le non-respect de la casse ne peut se faire avec la commande 'd', c'est déjà ça de pris :)
0