다음과 같이 자동으로 생성된 문서를 포함하는 여러 함수가 있다고 가정해 보겠습니다.
/**
* @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)