Rechercher : dans
Par :

Sed : suppression insensible casse

Dernière réponse le 11 jan 2009 à 16:57:53 eZula, le 9 jan 2009 à 22:24:11 
 Signaler ce message aux modérateurs

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
Configuration: Windows XP
Firefox 3.0.5

Meilleures réponses pour « Sed : suppression insensible casse » dans :
Sed - Supprimer une ou plusieurs lignes d'un fichier Voir Supprimer une (ou plusieurs) ligne(s) d'un fichier Syntaxe sed '{[/]||[/]}d' sed '{[/][,][/]d' /.../ = délimiteurs n = le numéro de ligne chaîne = la chaîne contenue dans la...
Sed - Introduction à SED - Part III VoirSED - The Stream EDitor - Part III Ce document est une introduction à la pratique et à l'utilisation de l'éditeur de flux "SED", qui essaie de couvrir certaines fonctionnalités assez méconnues, pour ne pas dire "quasi inconnues", qui font de "SED"...
Sed - Trucs et astuces VoirSubstitution Affichage Suppression Espace et tabulation Ligne vide Intervalle régulier Divers Joindre des lignes Affichage insensible à la casse Substitution Substituer "foo" par "bar" à chaque ligne Seulement la 1ère...
[Windows 2000] Affichage Ajout/suppression de programmes VoirUn beau jour, vous voulez désinstaller un programme mais la fenêtre Ajout/suppression de programmes n'affiche que du blanc et vous avez un message d'erreur du genre : Une erreur inattendue s'est produite Cet objet ne gère pas cette propriété ou...
Supplier Relationship Management (SRM) VoirSupplier Relationship Management Le terme « Supplier Relationship Management » (noté SRM), traduisez « gestion de la relation fournisseur » désigne l'utilisation de technologies par une entreprise afin d'améliorer le mécanisme d'approvisionnement...

1

jipicy, le 9 jan 2009 à 23:11:44

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'

$ man woman
Il n'y a pas de page de manuel pour woman.

Répondre à jipicy

4

lami20j, le 10 jan 2009 à 09:20:03

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" 106485010510997108

Répondre à lami20j

5

jipicy, le 10 jan 2009 à 10:10:50

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 ;-(
$ man woman
Il n'y a pas de page de manuel pour woman.

Répondre à jipicy

7

lami20j, le 10 jan 2009 à 10:52:19

Re,

Il n'y a pas moyen de affiche le contraire de

 sed 's/^\[hkey_local_machine\\system//i' fic
?! 106485010510997108

Répondre à lami20j

8

jipicy, le 10 jan 2009 à 11:09:32

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 ;-)
$ man woman
Il n'y a pas de page de manuel pour woman.

Répondre à jipicy

9

lami20j, le 10 jan 2009 à 11:30:45

Tu peux l'écrire dans la FAQ dans tes astuces SED

Affiche uniquement les lignes correspondant à un motif donné avec insensibilité à la case 106485010510997108

Répondre à lami20j

10

jipicy, le 10 jan 2009 à 11:34:07

J'essaierai d'ici la fin du week-end, mais bon si ça te chante, te gènes pas ;-))

Merci encore (d'avance peut être) ;-)) $ man woman
Il n'y a pas de page de manuel pour woman.

Répondre à jipicy

11

 jipicy, le 11 jan 2009 à 16:57:53

Ayé ;-))
$ man woman
Il n'y a pas de page de manuel pour woman.

Répondre à jipicy

2

eZula, le 9 jan 2009 à 23:22:29

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]

Répondre à eZula

3

jipicy, le 9 jan 2009 à 23:34:48

grep -i '^\[HKEY_LOCAL_MACHINE\\SYSTEM' fichier > new_fich

$ man woman
Il n'y a pas de page de manuel pour woman.

Répondre à jipicy

6

eZula, le 10 jan 2009 à 10:16:09

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 :)

Répondre à eZula