파일에서 패턴과 일치하는 모든 함수 문서를 제거합니다.

파일에서 패턴과 일치하는 모든 함수 문서를 제거합니다.

다음과 같이 자동으로 생성된 문서를 포함하는 여러 함수가 있다고 가정해 보겠습니다.

/**
  * @author John Doe
  */

파일에 이런 방식으로 기록된 모든 함수에서 이 3줄을 쉽게 제거할 수 있는 방법이 있습니까? 이 문제의 까다로운 점은 단순히 전체 파일을 한 줄씩 처리하는 것이 아니라 일부 컨텍스트를 살펴봐야 한다는 것입니다.

답변1

그리고 perl:

perl -0777 -i -pe 's{^/\*\*\n  \* @author.*\n  \*/\n}{}gm' the-file

이러한 주석의 들여쓰기 수준이 다르거나 줄 끝에 공백이 있는 경우(Microsoft 세계의 캐리지 리턴 포함) 정규식을 조정해야 합니다.

답변2

Bash 대신 Python으로 전환하면 최소한 하나의 솔루션을 찾는 것이 더 쉬워집니다.

#!/usr/bin/env python3

import argparse
import re

from pathlib import Path

def remove_doc(filename: str):
    fpath = Path(filename)
    content = fpath.read_text()
    pattern = r"/\*\*\n\s+\* @author.*\n\s+\*/\n"
    updated_content = re.sub(pattern, r"", content)
    fpath.write_text(updated_content)

if __name__ == "__main__":
    parser = argparse.ArgumentParser(description='Remove auto-generated documentation.')
    parser.add_argument('fpath', type=str)
    args = parser.parse_args()
    remove_doc(args.fpath)

관련 정보