所以我有很多这样的行 -
$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
现在问题就在于此。我希望仅在第二个单词恰好是“duplex-link-op”的地方删除“10mb 10ms”字符串。因此,我不能用“”命令替换“10mb 10ms”。 / - 在类似的说明中,如何搜索和替换恰好在具有另一个字符串的行中发生的特定字符串?我猜测它与反向引用有关...但我无法在网上找到足够的教程如何这样做:(
答案 0 :(得分:6)
:g/duplex-link-op/s/10mb 10ms//g
应该替换它们。
并尝试:help sub-replace-expression
和:help sub-replace-special
,以便在Vim中进行反向引用。
答案 1 :(得分:1)
如果您不介意使用其他工具,
awk '$2=="duplex-link-op"{ sub("10mb 10ms","")}1' file > t && mv t file
sed -i.bak '/duplex-link-op/s/10mb 10ms//' file