30

Javaファイルがあります。一致を含むコード行にコメントを付けたい:

 myvar

sedはここで私を助けてくれるはずだと思います

 sed 's/myVar/not_sure_what_to_put_here/g' MyFile.java

何を入れるべきかわからない:

not_sure_what_to_put_here

この場合のように、myVarを置き換えたくないが、挿入したい

//

myVarが発生する行の先頭まで。

任意のヒント

4

3 に答える 3

48

次を含む行全体をキャプチャします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

于 2013-01-03T10:53:46.133 に答える
4

試す:

sed -n '/myVar/{s|^|//|};p' MyFile.java

つまり、行にが含まれている場合は、行myVarの先頭を。に置き換え//ます。

于 2013-01-03T10:52:13.170 に答える