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
。
試す:
sed -n '/myVar/{s|^|//|};p' MyFile.java
つまり、行にが含まれている場合は、行myVar
の先頭を。に置き換え//
ます。