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?

elbarna
la source

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.

Kira
la source
+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