假设您有许多带有自动生成文档的函数,类似于:
/**
* @author John Doe
*/
有没有一种简单的方法可以从文件中以这种方式记录的每个函数中删除这 3 行?这个问题的棘手之处在于它需要查看一些上下文,而不是简单地逐行处理整个文件。
答案1
和perl
:
perl -0777 -i -pe 's{^/\*\*\n \* @author.*\n \*/\n}{}gm' the-file
如果这些注释具有不同级别的缩进,或者行尾有任何空格(包括来自 Microsoft 世界的回车符),则您需要调整正则表达式。
答案2
切换到 python(而不是 bash)可以更轻松地提出至少一种解决方案:
#!/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)