Vim: remplacer toute la ligne commençant par la chaîne par la ligne


9

Sur ce texte

hardware mac 33:33:333:33:33
hardware mac 33:13:333:33:33
hardware mac 33:23:333:23:34
hardware mac 33:033:133:33:35
...

Je souhaite remplacer toutes les lignes commençant par mac matériel par

hardware mac 00:00:00:00:00:00

j'ai essayé

sed s/^hardware mac/hardware mac 00:00:00:00:00:00/gc

et donner une erreur

aussi la commande vim classique

%s:/^hardware mac/hardware mac 00:00:00:00:00:00/gc

Mais ne changez que la chaîne matérielle mac en laissant les chiffres inchangés. Comment remplacer une chaîne commençant par un matériel Mac avec ma chaîne?

Réponses:


14

Vous avez presque réussi, vous avez juste oublié de faire correspondre le reste de la ligne (on vim):

:%s/^hardware mac.*/hardware mac 00:00:00:00:00:00/gc

Vous pouvez supprimer les gcoptions à la fin si vous êtes sûr de ce que vous faites, ce gsera probablement inutile car vous ne correspondrez pas plus d'une fois par ligne.

Avec sedc'est la même chose:

sed -i 's/^hardware mac.*/hardware mac 00:00:00:00:00:00/' filename

Notez que sedla commande de substitution de sn'accepte pas un cindicateur (confirmer), comme le vimfait.


+1 FWIW l' gen /gcest redondant, puisque ce regex ne peut correspondre à l' une par ligne de toute façon.
Sparhawk

J'étais en train de modifier ma réponse pendant que vous écriviez ce commentaire (=
Kira

Notez que cette sedsyntaxe est de style GNU. Toutes les versions ne prennent pas en charge -iet certaines nécessitent un argument.
Eric Renouf
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.