フォルダ内のすべてのファイルから特殊文字を含む複数行のテキストを削除する

フォルダ内のすべてのファイルから特殊文字を含む複数行のテキストを削除する

i.e. //*(): etc削除するフォルダ内の複数のファイルには、次のように特殊文字()を含む複数行のテキストが含まれています。を使用して他のsedすべてのソリューションを試してみましたが、awk誰も好きではないようです//

// Some text with (something else) and a clack 6*5. 
// Rest on the next line with some more  
// etc. http://website.com/helloworld.php 
// and just another line.

私にとって必要なのは、フォルダ内のすべてのファイルからこのテキストを検索して削除することだけですdata

答え1

//以下を使用してシーケンスを処理する方法はいくつかあります。sed

  1. バックスラッシュは各/インスタンスをエスケープします。

    sed '/^\/\//d' file
    
  2. キャラクター/リストに入れてみてください[...]

    sed  '/^[/]\{2\}/d' file
    

    または(GNU sedを使用)

    sed -r /^[/]{2}/d' file
    
  3. //シーケンスが文字通り処理されるように、正規表現区切り文字を別の文字に変更します。

     sed '\%^//%d' file
    

答え2

3つの方法を紹介します。

  1. GCCの使用

    gccC / C ++ファイルからコメントを削除するためのプリプロセッサとして使用できます。

    はい

    $ cat test.c 
    #define foo bar
    foo foo foo
    #ifdef foo
    #undef foo
    #define foo baz
    #endif
    foo foo
    
    // Some text with (something else) and a clack 6*5. 
    // Rest on the next line with some more  
    // etc. http://website.com/helloworld.php 
    // and just another line.
    

    コメントを削除するには:

    $ gcc -fpreprocessed -dD -E test.c
    # 1 "test.c"
    #define foo bar
    foo foo foo
    #ifdef foo
    #undef foo
    #define foo baz
    #endif
    foo foo
    

    find . -iname "*.c"すべてのファイルを検索し、上記のファイルを実行するために使用するように調整できます.c。これは1つの方法になります。

  2. 使用stripcmt

    というツールがあります。バンド(つまり、コメントを削除)必要に応じて何でもできます。

  3. パールを使う

    このPerl CPANモジュールを使用して、カスタムスクリプトを介してコメントを削除することもできます。 CPAN モジュールは次のように呼び出されます。正規表現::一般::コメント。 CPANページにこれを行う方法の例があります。

答え3

以下も使用できますgrep

grep -v // file

印刷された-v行が指定されたパターンと一致しません。

またはperl:

perl -ne 'print unless m#^//#;' file 

または

perl -ne 'next if m#^//#; print' file 

関連情報