リポジトリ内のすべてのファイルから特定の特徴的な1行のC ++コメントを削除する必要があります。コードは次のとおりです。
some_code
// characteristic_comment_to_delete
some_more_code // another_comment
another_line_with_code // characteristic_comment_to_delete
even_more_code
その結果、私はこれを得たいと思います:
some_code
some_more_code // another_comment
another_line_with_code
even_more_code
私はsedコマンドを使用して、私が望むほど良い結果を得ました。
$ sed -i -e 's&// characteristic_comment_to_delete.*&&g' some_file.cpp
some_code
some_more_code // another_comment
another_line_with_code
even_more_code
残念ながら、これらの空行を残すことは許容可能な解決策ではないため、行全体を削除するようにコマンドを何らかの形で改善する必要がありますが、この特定のコメントを削除した後にのみ空白のままにしてください。
編集:明らかにこのコマンドをrootとして実行していません。これによりプロンプトが変更されました。また、すべてのコメントを削除したくないので、私のトピックが他のスレッドと重複しているようには見えません。
ベストアンサー1
Sedにはd
行全体を削除するコマンドがあります。 (非)区切り文字を使用することもできますが、/
初めて使用するときはエスケープする必要があります\
。だからあなたは次のことをすることができます
$ sed -e '\#^// characteristic_comment_to_delete$#d' -e 's#// characteristic_comment_to_delete.*##' file
some_code
some_more_code // another_comment
another_line_with_code
even_more_code
まず、完全に構成された行を削除して// characteristic_comment_to_delete
から、残りの一致を置き換えます。
(sed代替演算子との混同を避ける&
ためにあなたのものを変更しました)。#
&