我在多个文件中有一个变量,如下所示:
localparam SOME_VARIABLE = 2'h1; // some comments
我正在寻找一种方法来替换此变量后的值' h'。例如,在这种情况下,我想搜索" SOME_VARIABLE"使用SED将h之后的值(在这种情况下为1,但可能是其他)更改为0。请注意,变量名称和=符号之间的空格可能会有所不同,我希望保持原样,我只需要在h之后更改该数字。
我知道如何找到与模式匹配的行并将其替换为另一个值,但我希望保持原样,并在h之后仅替换该数字。
答案 0 :(得分:1)
假设;
只能在评论
;
之前发生一次
$ echo "localparam SOME_VARIABLE = 2'h1; // some 23; comments" | sed '/SOME_VARIABLE/ s/[0-9]*;/0;/'
localparam SOME_VARIABLE = 2'h0; // some 23; comments
/SOME_VARIABLE/
行匹配s/[0-9]*;/0;/
将第一次出现的数字替换为;
到0;
;
之间可以有空格,则根据需要使用[0-9 ]*
或[0-9 \t]*
答案 1 :(得分:0)
试试这个 -
$ cat f
localparam SOME_VARIABLE = 2'h1; // some comments
$ awk '{gsub(/[[:digit:]]*;/,"5;");print}' f
localparam SOME_VARIABLE = 2'h5; // some comments
$ awk '{gsub(/[[:digit:]]*;/,"0;");print}' f
localparam SOME_VARIABLE = 2'h0; // some comments
答案 2 :(得分:0)
使用sed的另一种简单方法:
sed '/SOME_VARIABLE/s/[0-9];/0;/' file