regex - Add/Insert lines before pattern such that lines to be added have part of the pattern in uppercase -
regex - Add/Insert lines before pattern such that lines to be added have part of the pattern in uppercase -
i have add together compiler directives before class declaration :
`ifndef mipi_rffe_scoreboard__sv `define mipi_rffe_scoreboard__sv class mipi_rffe_scoreboard extends uvm_scoreboard; i tried :
sed 's/class (\w+)(.*)/\`ifndef \u\1__sv\2/' mipi_rffe_scoreboard.sv which gives :
sed: -e look #1, char 38: invalid reference \2 on `s' command's rhs i have seen using sed, insert line below (or above) pattern?. here kamal's reply solves part of problem need capture "mipi_rffe_scoreboard" , alter uppercase
you run perl one-liner on file:
perl -pe 's/(class (\w+))/`ifndef \u$2\e__sv\n`define \u$2\e__sv\n\n$1/' it captures lines containing "class" followed word , prepends 2 lines. \u used transform match uppercase , \e end transformation.
testing out:
$ perl -pe 's/(class (\w+))/`ifndef \u$2\e__sv\n`define \u$2\e__sv\n\n$1/' <<<"class mipi_rffe_scoreboard extends uvm_scoreboard;" `ifndef mipi_rffe_scoreboard__sv `define mipi_rffe_scoreboard__sv class mipi_rffe_scoreboard extends uvm_scoreboard; alternatively (tested on gnu sed, i'm confident won't work on other versions):
sed -r 's/class (\w+)/`ifndef \u\1\e__sv\n`define \u\1\e__sv\n\n&/' -r enables extended regex mode, allows utilize ( ) capture patterns. normally, have escape them using \( \).
regex perl shell awk sed
Comments
Post a Comment