gpt4 book ai didi

bash - Sed 替换特定字符串,在某些模式之间的多行中

转载 作者:行者123 更新时间:2023-11-29 09:32:03 24 4
gpt4 key购买 nike

我有一个简单的问题(我认为),我需要替换文件 (verilog) 中出现在多行中的特定字符串。这些线本身就在特定的模式之间

例如:

lk
lk
lk
lk
lk

//comment1
input [5:0]a,
input [3:0]b,
input c,
input [4:0]d,
input f,

//comment2
lm
lm
lm
lm

我需要将“comment1”和“comment2”之间的“input”替换为“logic”,以保持它们在最终结果中的原样(不包括引号,仅供理解)

现在我有的是

sed '/\/comment1/,/\/comment2/s/input/logic/g' file1.sv > file2.sv

我得到的结果是

lk
lk
lk
lk
lk

//comment1
logic
logic
logic
logic
logic

//comment2
lm
lm
lm
lm

逻辑消失后的其余文本,我需要保留它

有人可以帮忙吗,我将不胜感激...

最佳答案

你可以使用这个 sed 命令:

sed -i.bak '/\/\/comment1/,/\/\/comment2/s/\<input\>/logic/g' file
  • /\/\/comment1/,/\/\/comment2/是在 2 个评论 block 之间搜索文本
  • \<input\>用于将输入与词边界匹配
  • s/\<input\>/logic/g用于将“输入”替换为“逻辑”

关于bash - Sed 替换特定字符串,在某些模式之间的多行中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20910764/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com