Vim: заменить всю строку, начинающуюся со строки, строкой


9

На этот текст

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
...

Я хочу заменить все строки, начиная с аппаратного Mac на

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

я пытался

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

и дать ошибку

также классическая команда VIM

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

Но измените только аппаратную строку mac, оставив цифры нетронутыми. Как заменить строку, начинающуюся с аппаратного Mac, моей строкой?

Ответы:


14

Вы почти правильно поняли, вы просто забыли сопоставить остальную часть строки (вкл vim):

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

Вы можете отказаться от gcопций в конце, если вы уверены в том, что делаете, gскорее всего, излишне, так как вы не будете совпадать более одного раза в строке.

С sedэтим тоже самое

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

Обратите внимание, что sedкоманда подстановки sне принимает c(подтверждает) флаг, как это vimделает.


+1 FWIW gв /gcизбыточен, так как это регулярное выражение может соответствовать только одному в каждой строке в любом случае.
Sparhawk

Я редактировал мой ответ, пока вы писали этот комментарий (=
Кира,

Обратите внимание, что этот sedсинтаксис в стиле GNU. Не все версии поддерживают, -iа некоторые требуют аргументации.
Эрик Ренуф
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.