gpt4 book ai didi

regex - 找到匹配项时使用 sed 替换行首

转载 作者:行者123 更新时间:2023-12-03 11:34:53 26 4
gpt4 key购买 nike

我有一个 Java 文件。我想注释包含匹配项的任何代码行:

 myvar

我认为 sed 应该在这里帮助我
 sed 's/myVar/not_sure_what_to_put_here/g' MyFile.java

我不知道该放什么:
not_sure_what_to_put_here

在这种情况下,我不想替换 myVar 但我想插入
//

到 myVar 出现的任何行的开头。

有小费吗

最佳答案

捕获包含 myvar 的整行:

$ sed 's/\(^.*myvar.*$\)/\/\/\1/' file

$ cat hw.java
class hw {
public static void main(String[] args) {
System.out.println("Hello World!");
myvar=1
}
}

$ sed 's/\(^.*myvar.*$\)/\/\/\1/' hw.java
class hw {
public static void main(String[] args) {
System.out.println("Hello World!");
// myvar=1
}
}

使用 -i保存文件更改的选项 sed -i 's/\(^.*myvar.*$\)/\/\/\1/' file .

解释:
(      # Start a capture group
^ # Matches the start of the line
.* # Matches anything
myvar # Matches the literal word
.* # Matches anything
$ # Matches the end of the line
) # End capture group

所以这会查看整行,如果 myvar发现结果存放在第一个捕获组中,引用为 \1 .所以我们替换整行 \1整行前面有 2 个正斜杠 //\1当然,正斜杠需要转义以免混淆 sed所以 \/\/\1另请注意,除非您使用 sed 的扩展正则表达式选项,否则括号需要转义.

关于regex - 找到匹配项时使用 sed 替换行首,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14137353/

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