I have a file foo
I want to edit. I want to substitute all the lines of the file
before a certain pattern match $node_(2)
$node_(0) set X_ 46.188445620285734
$node_(0) set Y_ 400.0
# $ns_ at 0.0 "$node_(0) setdest 46.188445620285734 400.0 0.0"
$ns_ at 4.230260628522046 "$node_(0) setdest 140.0 400.0 11.073898626729083"
$ns_ at 12.70167232749509 "$node_(0) setdest 140.0 293.81155437971427 11.073898626728642"
# $ns_ at 22.290747430998636 "$node_(0) setdest 140.0 293.81155437971427 0.0"
$ns_ at 24.512130351924498 "$node_(0) setdest 140.0 121.22627768528247 11.143254728766196"
$node_(1) set X_ 284.3754249089888
$node_(1) set Y_ 400.0
$ns_ at 0.0 "$node_(1) setdest 358.5058741786957 400.0 10.938908248230844"
# $ns_ at 6.776768539190925 "$node_(1) setdest 358.5058741786957 400.0 0.0"
$ns_ at 8.52331532068547 "$node_(1) setdest 400.0 400.0 11.27995015881709"
$ns_ at 12.201888828288247 "$node_(1) setdest 400.0 341.4941258213043 11.279950158817115"
# $ns_ at 17.388602719303435 "$node_(1) setdest 400.0 341.4941258213043 0.0"
$ns_ at 22.22922653365822 "$node_(1) setdest 400.0 141.4941258213043 11.258336966410015"
$node_(2) set X_ 270.0 //so basically here is the pattern match
$node_(2) set Y_ 293.0222761518543
.
.
.
The file should then look like this
$node_(0) set X_ 10.0
$node_(0) set Y_ 10.0
$node_(1) set X_ 510.0
$node_(1) set Y_ 510.0
$node_(2) set X_ 270.0 //pattern and everything after it is left intact
$node_(2) set Y_ 293.0222761518543
.
.
.
I tried usind sed
sed -i -e '/$node_(0)/,/$node_(2)/c\$node_(0)\ set X_ 10.0 \n$node_(0) set Y_ 10.0\n$node_(1) set X_ 510.0\n$node_(1) set Y_ 510.0' foo
but it removes the first $node_(2)
line completely. Also, the number of lines before $node_(2)
is changing for every new foo
file so I can't count lines to substitute every time.