Changer un mot dans un fichier par un autre

Résolu/Fermé
Utilisateur anonyme - 9 juil. 2010 à 08:25
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 juil. 2010 à 02:19
Bonjour ;-)

Dans un fichier de configuration je souhaiterais changer toutes les lignes contenant :
"NAME="
en:
"SYMLINK+="

Merci beaucoup pour votre aide ;-)




A voir également:

5 réponses

Franzux Messages postés 8907 Date d'inscription mercredi 5 décembre 2007 Statut Contributeur Dernière intervention 27 octobre 2015 1 145
9 juil. 2010 à 08:47
franz@elenium:~/test$ cat tutu 
banane
fraise
pomme
pomme
fraise
banane
concombre (pas bon !)
banane
fraise
pomme
franz@elenium:~/test$ sed 's/fraise/framboise/g' tutu > titi
franz@elenium:~/test$ cat titi 
banane
framboise
pomme
pomme
framboise
banane
concombre (pas bon !)
banane
framboise
pomme
franz@elenium:~/test$ 


Donc dans ton cas précis, un simple :

sed 's/NAME=/SYMLINK+=/g' fichier_d_origine fichier_cible
suffit ;)

Cordialement,

Franz.
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 897
9 juil. 2010 à 09:04
Salut,

sed 's/NAME=/SYMLINK+=/g' fichier_d_origine fichier_cible

Oui, ou :

sed -i.orig 's/NAME=/SYMLINK+=/g' fichier_d_origine 
0
Franzux Messages postés 8907 Date d'inscription mercredi 5 décembre 2007 Statut Contributeur Dernière intervention 27 octobre 2015 1 145
9 juil. 2010 à 09:08
Le -i permet donc de faire une copie de sauvegarde, c'est bien ça ?
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 897
Modifié par jipicy le 9/07/2010 à 09:19
Yes. A partir de la version "4.et_des_brouettes" ;-))

Derrière le "." tu mets le suffixe que tu veux (BAK, bak, orig, etc.).

Edit : Enfin non, le "-i" permet de modifier le fichier "in place", la copie de secours se fait en rajoutant un suffixe...
0
Bonjour ;-)

Ça roule merci :-)

KERNEL=="umad*",                SYMLINK+="infiniband/%k" 
KERNEL=="issm*",                SYMLINK+="infiniband/%k" 
KERNEL=="uverbs*",              SYMLINK+="infiniband/%k" 
KERNEL=="ucm*",                 SYMLINK+="infiniband/%k" 
KERNEL=="uat",                  SYMLINK+="infiniband/%k" 
KERNEL=="ucma",                 SYMLINK+="infiniband/%k" 
KERNEL=="rdma_cm",              SYMLINK+="infiniband/%k"


Encore un grand merci :-)

Édité pour hors sujet :)

If you want to go quickly, go alone. If you want to go far, go together.
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 569
Modifié par lami20j le 9/07/2010 à 10:37
Salut,

Mon grain de sel ;-)
Oui, ou :

Je dirais que c'est même la commande qu'il faut utiliser, sachant que
"AVANT TOUTE MODIFICATION IL FAUT TOUJOURS FAIRE UNE COPIE DE SAUVEGARDE DU FICHIER ORIGINAL"

GNU/Linux:Linux is Not Ubuntu! Quel linux choisir ne veut pas dire votre Distribution préférée,
106485010510997108
0
Utilisateur anonyme
9 juil. 2010 à 17:09
Encore merci à vous tous, je viens de trouver une autre application à cette commande de sed pour éditer le fichier de configuration du kernel :

alexis:/usr/src/linux# cat .config | grep DEVTMPFS
# CONFIG_DEVTMPFS is not set
alexis:/usr/src/linux# sed -i.orig 's/CONFIG_DEVTMPFS is not set/CONFIG_DEVTMPFS=y/g' .config
alexis:/usr/src/linux# cat .config | grep DEVTMPFS
# CONFIG_DEVTMPFS=y


Excellent, avant je passait mon temps à chercher après :-)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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 569
9 juil. 2010 à 18:23
Re,

Oui, mais ça ce n'est pas une chose à faire.
La configuration du noyau passe par make menuconfig et pas avec sed

Ensuite pas besoin de cat fichier | grep motif
Il suffit de faire grep motif fichier

Ce qui donne
lami20j@debian-acer:/usr/src/linux$ grep DEVTMPFS .configCONFIG_DEVTMPFS=y
# CONFIG_DEVTMPFS_MOUNT is not set


Et puis même si -i.orig te permets de faire une copie de sauvegarde vaut mieux voir d'abord ce que fait sed sans modifier.
Dans ton cas il y a une seule occurrence. Je te laisse imaginer s'il y en a plusieurs.
Si le résultat te conviens alors tu peux utiliser -i.orig

Donc vérification
lami20j@debian-acer:/usr/src/linux$ sed 's/CONFIG_DEVTMPFS is not set/CONFIG_DEVTMPFS=y/g' .config | grep DEVTMPFS
CONFIG_DEVTMPFS=y
# CONFIG_DEVTMPFS_MOUNT is not set


On voit bien que le résultat conviens cette fois, mais avec les regex il faut se méfier. Tu dois savoir que le moteur des regex n'est pas intelligent, il est juste persévèrent, un bon soldat quoi ;-))
Tu donnes un ordre et il l'exécute, il ne demandera jamais pourquoi. Je te laisse imaginer un mauvais ordre.



0
Utilisateur anonyme
9 juil. 2010 à 22:22
Salut :-)

Tout à fait d'accord, la configuration est idéale par make menuconfig, mais j'y ai cherché
DEVTMPFS sans succès dans toutes les options du noyaux et pour finir, c'était plus simple d'éditer .config en y cherchant l'occurrence :-)
Mais je vais faire attention à ce que tu dis à propos de l'édition de ce fichier, c'est vrai que j'aurais pu avoir plusieurs occurrences ;-)

Je vais faire un topic sur deux bugs découverts avec 2.6.34.1 sur Debian et leur solutions pour partager avec tout le monde ;-)

@++
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 569
Modifié par lami20j le 10/07/2010 à 02:22
Re,

mais j'y ai cherché DEVTMPFS sans succès dans toutes les options du noyaux et pour finir,
Ben, il faut alors apprendre chercher ;-)

Après make menuconfig on a ça
 .config - Linux Kernel v2.6.32 Configuration   
                                                   Linux Kernel Configuration   
  Arrow keys navigate the menu.  <Enter> selects submenus --->.  Highlighted letters are hotkeys.  Pressing <Y> includes, <N>     
  excludes, <M> modularizes features.  Press <Esc><Esc> to exit, <?> for Help, </> for Search.  Legend: [*] built-in  [ ]     
  excluded  <M> module  < > module capable     
     
                              General setup  --->       
                          [*] Enable loadable module support  --->       
                          -*- Enable the block layer  --->       
                              Processor type and features  --->       
                              Power management and ACPI options  --->       
                              Bus options (PCI etc.)  --->       
                              Executable file formats / Emulations  --->       
                          -*- Networking support  --->       
                              Device Drivers  --->       
                              Firmware Drivers  --->       
                              File systems  --->       
                              Kernel hacking  --->       
                              Security options  --->       
                          -*- Cryptographic API  --->       
                          [*] Virtualization  --->       
                              Library routines  --->       
                          ---       
                              Load an Alternate Configuration File       
                              Save an Alternate Configuration File       
       
       
       
       
       
       
       
                                               <Select>    < Exit >    < Help > 

Il faut taper / pour Recherche (voir en gras) et écrire l'option que tu cherche dans la boite de dialogue qui s'ouvre.

Tu vas voir ça

 Symbol: DEVTMPFS_MOUNT [=n]     
 Prompt: Automount devtmpfs at /dev     
   Defined at drivers/base/Kconfig:28     
   Depends on: DEVTMPFS [=y]     
   Location:     
     -> Device Drivers     
       -> Generic Driver Options     
         -> Create a kernel maintained /dev tmpfs (EXPERIMENTAL) (DEVTMPFS [=y])     
     
     
 Symbol: DEVTMPFS [=y]     
 Prompt: Create a kernel maintained /dev tmpfs (EXPERIMENTAL)     
   Defined at drivers/base/Kconfig:11     
   Depends on: HOTPLUG [=y] && SHMEM [=y] && TMPFS [=y]     
   Location:     
     -> Device Drivers     
       -> Generic Driver Options 


Donc on va regarder dans Device Drivers / Generic Driver Options et on va trouver ça

[*] Create a kernel maintained /dev tmpfs (EXPERIMENTAL)

Si tu séléctionnes Help et tu regardes tu verras ça

CONFIG_DEVTMPFS:   
     
 This creates a tmpfs filesystem, and mounts it at bootup     
 and mounts it at /dev. The kernel driver core creates device     
 nodes for all registered devices in that filesystem. All device     
 nodes are owned by root and have the default mode of 0600.     
 Userspace can add and delete the nodes as needed. This is     
 intended to simplify bootup, and make it possible to delay     
 the initial coldplug at bootup done by udev in userspace.     
 It should also provide a simpler way for rescue systems     
 to bring up a kernel with dynamic major/minor numbers.     
 Meaningful symlinks, permissions and device ownership must     
 still be handled by userspace.     
 If unsure, say N here.     
     
 Symbol: DEVTMPFS [=y]     
 Prompt: Create a kernel maintained /dev tmpfs (EXPERIMENTAL)     
   Defined at drivers/base/Kconfig:11     
   Depends on: HOTPLUG [=y] && SHMEM [=y] && TMPFS [=y]     
   Location:     
     -> Device Drivers     
       -> Generic Driver Options


Mais attention, cette options a des dépendances
Depends on: HOTPLUG [=y] && SHMEM [=y] && TMPFS
La modifications avec sed n'a pas pris en compte les dépendances et le seul moyen de savoir c'est d'utiliser correctement menuconfig.
En utilisant le même moyen de recherche tu trouveras la location des autres options pour vérifier si elle sont bien configurées.
0