Vim search and replace - заменить строку, найденную только в определенных строках - PullRequest
2 голосов
/ 13 октября 2010

Итак, у меня есть несколько таких строк:

$ns duplex-link n1 n2 10mb 10ms DropTail
$ns duplex-link-op n1 n2 10mb 10ms queuePos 0.5
$ns duplex-link n2 n3 10mb 10ms DropTail
$ns duplex-link-op n2 n3 10mb 10ms queuePos 0.5
$ns duplex-link n3 n4 10mb 10ms DropTail
$ns duplex-link-op n3 n4 10mb 10ms queuePos 0.5

Теперь вот проблема. Я хочу, чтобы строка «10mb 10ms» была удалена только в том случае, если второе слово «duplex-link-op». Поэтому я не могу сделать общую замену "10mb 10ms" командой "". / - На аналогичном замечании, как мне выполнить поиск и замену определенной строки, которая происходит в строке с другой строкой? Я предполагаю, что это как-то связано с обратными ссылками ... но я не могу найти в Интернете достаточно учебных пособий о том, как это сделать :(

Ответы [ 2 ]

6 голосов
/ 13 октября 2010

:g/duplex-link-op/s/10mb 10ms//g должны заменить их.

И попробуйте :help sub-replace-expression и :help sub-replace-special для ближайшей ссылки на обратные ссылки в Vim.

1 голос
/ 13 октября 2010

Если вы не возражаете против использования других инструментов,

awk '$2=="duplex-link-op"{ sub("10mb 10ms","")}1' file > t && mv t file

sed -i.bak '/duplex-link-op/s/10mb 10ms//' file
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...