私はパッチファイルからCコメントを取り除こうとしているので、多数の正規表現を調べましたが、パッチから行を削除すると、それらが壊れてしまいます。
regexまたはsedコマンドを記述して、diffパッチファイルでコメントを検索し、コメント行を空白に置き換えます。
これは機能しますsedregexはCファイルで機能しますが、パッチでは別のものが必要です。
sed '/^\/\*/,/\*\//d'
パッチの抜粋の例は次のとおりです。
@@ -382,7 +391,109 @@
return len;
}
+/**********************************************************************************
+ * Some patch
+ * Author: Mcdoomington
+ * Do somethimg
+ *
+ * fix me
+ **********************************************************************************/
誰かアイデアがありますか?
編集:
このフィルターの使用:
sed -e 's,^+ \*.*,+ \/\/Comment removed,' mypatch.patch > output
+/**********************************************************************************
+ //Comment removed
+ //Comment removed
+ //Comment removed
スキップするために\で終わるif行を追加するにはどうすればよいですか?
編集:解決策
最もクリーンな方法ではありませんが、私はsedを陪審員が装備した正規表現で使用しました。
sed -e '/[^\*\/]$/{N;s,^+ \* .*,+ \* Comment removed,;}' patch > output
sed -e '/[^\*\/]$/{N;s,^+\\\* .*,+ \/\* Comment removed,;}' patch > output
2番目のコマンドは少し貪欲すぎる可能性があることに注意してください。ただし、コメントをサニタイズするために、これは機能します。
使い方:
1.)最初のコマンドこれがコメントの終わりであるかどうかを判断するには/ [^ * /]$/それが/then{N; s、^ +\*であるかどうかを判断します。、+ / *コメントが削除されました、;}'は+*(何でも)を見つけて、*コメントが削除されました。
2.)2番目のコマンドこれがコメントの終わりであるかどうかを判断するには、/ [^ * /]$/が/then{N; s、^ +\*であるかどうかを判断します。、+ / *コメントが削除されました、;}'は+*(何でも)を見つけて、*コメントが削除されたものに置き換えます。