用文件中的模式替换字符串
replace string with patterns in file
我使用 sed 替换 *.go 文件中的变量 sed -i 's/\<old_name\>/newName/g' *.go
我的 objective 是为了消除 golinter 错误。
具有常见模式的字符串如何,例如将 1 替换为 2
fmt.Printf("blah blah blah")
或 fmt.Printf("yadda yadda yadda")
fmt.Println("blah blah blah")
或 fmt.Println("yadda yadda yadda")
在这种情况下,我们不想替换:
1. fmt.Printf("print speed= %d",speed)
//所以这里的关键是结束模式应该是")
。
2. log.Printf语句 //只替换"fmt."
对此有任何指示吗?
我对你的问题有点困惑,但我认为你正在尝试执行以下操作:
replace printf("yada yada yada") with println("yada yada yada")
not replace printf("print speed = %d", speed)
如果是这样的话,我会做类似下面的事情:
sed -i '/Printf(\".*\")/ s/Printf/Println/g' *.go
在您真正想要使用格式的地方应该保持完整。这是一个例子:
[sborza@msandn]:~$ cat tester.go
package main
import "fmt"
func main() {
speed = 1
fmt.Printf("vim-go")
fmt.Printf("speed = %d\n", speed)
}
[sborza@msandn]:~$ sed '/Printf(\".*\")/ s/Printf/Println/g' tester.go
package main
import "fmt"
func main() {
speed = 1
fmt.Println("vim-go")
fmt.Printf("speed = %d\n", speed)
}
做
gofmt -w -r "printf -> println" .
注意做这个之前先备份文件
我使用 sed 替换 *.go 文件中的变量 sed -i 's/\<old_name\>/newName/g' *.go
我的 objective 是为了消除 golinter 错误。
具有常见模式的字符串如何,例如将 1 替换为 2
fmt.Printf("blah blah blah")
或fmt.Printf("yadda yadda yadda")
fmt.Println("blah blah blah")
或fmt.Println("yadda yadda yadda")
在这种情况下,我们不想替换:
1. fmt.Printf("print speed= %d",speed)
//所以这里的关键是结束模式应该是")
。
2. log.Printf语句 //只替换"fmt."
对此有任何指示吗?
我对你的问题有点困惑,但我认为你正在尝试执行以下操作:
replace printf("yada yada yada") with println("yada yada yada")
not replace printf("print speed = %d", speed)
如果是这样的话,我会做类似下面的事情:
sed -i '/Printf(\".*\")/ s/Printf/Println/g' *.go
在您真正想要使用格式的地方应该保持完整。这是一个例子:
[sborza@msandn]:~$ cat tester.go
package main
import "fmt"
func main() {
speed = 1
fmt.Printf("vim-go")
fmt.Printf("speed = %d\n", speed)
}
[sborza@msandn]:~$ sed '/Printf(\".*\")/ s/Printf/Println/g' tester.go
package main
import "fmt"
func main() {
speed = 1
fmt.Println("vim-go")
fmt.Printf("speed = %d\n", speed)
}
做
gofmt -w -r "printf -> println" .
注意做这个之前先备份文件