使用SED

时间:2017-04-03 16:02:05

标签: unix awk sed

我在多个文件中有一个变量,如下所示:

localparam SOME_VARIABLE    = 2'h1;  // some comments

我正在寻找一种方法来替换此变量后的值' h'。例如,在这种情况下,我想搜索" SOME_VARIABLE"使用SED将h之后的值(在这种情况下为1,但可能是其他)更改为0。请注意,变量名称和=符号之间的空格可能会有所不同,我希望保持原样,我只需要在h之后更改该数字。

我知道如何找到与模式匹配的行并将其替换为另一个值,但我希望保持原样,并在h之后仅替换该数字。

3 个答案:

答案 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