gpt4 book ai didi

sed - 删除多行注释

转载 作者:行者123 更新时间:2023-12-04 04:44:38 28 4
gpt4 key购买 nike

如果所有注释以/* 开头并以 */结尾,如何删除所有注释
我尝试了以下方法。它适用于一行注释。

sed '/\/\*/d' 

但它不会删除多行注释。例如第二行和第三行没有被删除。
/*!50500 PARTITION BY RANGE (TO_SECONDS(date_time ))
PARTITION 20120102parti VALUES LESS THAN (63492681600),
(PARTITION 20120101parti VALUES LESS THAN (63492595200) */ ;

在上面的例子中,我需要 保留最后一个; 在结束评论标志之后。

最佳答案

如果这是在 C 文件中,那么您必须为此使用 C 预处理器并结合其他工具来临时禁用特定的预处理器功能,例如扩展 #defines 或 #includes,所有其他方法在极端情况下都将失败。这适用于所有情况:

[ $# -eq 2 ] && arg="$1" || arg=""
eval file="\$$#"
sed 's/a/aA/g; s/__/aB/g; s/#/aC/g' "$file" |
gcc -P -E $arg - |
sed 's/aC/#/g; s/aB/__/g; s/aA/a/g'

将它放在一个 shell 脚本中,并使用您要解析的文件的名称调用它,可选地以“-ansi”等标志为前缀,以指定要应用的 C 标准。

https://stackoverflow.com/a/35708616/1745001详情。

关于sed - 删除多行注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13061785/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com