Заменить строку с шаблонами в файле
Я использовал sed для замены переменных в файлах *.go, используя sed -i 's/\<old_name\>/newName/g' *.go
Моя цель состоит в том, чтобы устранить ошибки 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." Есть какие-нибудь указатели на это?
2 ответа
Я немного смущен вашим вопросом, но думаю, что вы пытаетесь сделать следующее:
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" .
Обратите внимание, что сделать резервную копию файла, прежде чем сделать это.