2017-07-06 25 views
0

私はsedを使って* .goファイルの変数を置き換えましたsed -i 's/\<old_name\>/newName/g' *.go 私の目的はゴルターエラーを排除することです。 一般的なパターンの文字列はどのようにすることができますか? // 1. fmt.Printf("print speed= %d",speed)ので、ここで重要なのは、エンディングパターンです。この場合、2ファイル内のパターンで文字列を置き換えます

  1. fmt.Printf("blah blah blah")またはfmt.Printf("yadda yadda yadda")
  2. fmt.Println("blah blah blah")またはfmt.Println("yadda yadda yadda")

と1を置き換え、我々は交換したくありません")である必要があります。 2. log.Printfステートメント// "fmt"のみを置き換えます。 これに関する任意のポインターですか?

答えて

0

私は少しあなたの質問で混乱していますが、次の操作を実行しようとしていると思うよ:

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 

実際に書式設定を使用する場所はそのまま残しておく必要があります。次に例を示します。

[[email protected]]:~$ cat tester.go 
package main 

import "fmt" 

func main() { 
     speed = 1 
     fmt.Printf("vim-go") 
     fmt.Printf("speed = %d\n", speed) 
} 

[[email protected]]:~$ 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) 
} 
+1

OPは、 'Printf'ではなく' printf'を置き換えたいと考えています。同じ行にいくつかの 'printf'があると(' ')' 'で終わるものがいくつかありますが、欲張りパターン'。* 'は予期しない結果になることがあります。 – SLePort

+0

どちらの場合でも良い例です。欲張りですが、素早く+汚れた修正で十分です。 – sebito91

0

は、この操作を行う前に、バックアップファイルを作成

gofmt -w -r "printf -> println" . 

注意を行います。

関連する問題