폴더의 모든 파일에서 특수 문자가 포함된 여러 줄의 텍스트 제거

폴더의 모든 파일에서 특수 문자가 포함된 여러 줄의 텍스트 제거

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. 이는 한 가지 방법이 될 것입니다.

  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 

관련 정보