bash – 使用sed删除文件中的所有注释
发布时间:2020-12-15 18:59:59 所属栏目:安全 来源:网络整理
导读:如何使用sed从文件(用#定义)中删除所有注释,关于字符串中的’#’? 除了字符串部分外,This帮了很多忙. 如果#总是表示评论,并且可以出现在一行的任何地方(如某些代码之后): sed 's:#.*$::g' file-name 如果要在适当的位置更改它,请添加-i开关: sed -i 's:#.
如何使用sed从文件(用#定义)中删除所有注释,关于字符串中的’#’?
除了字符串部分外,This帮了很多忙.
如果#总是表示评论,并且可以出现在一行的任何地方(如某些代码之后):
sed 's:#.*$::g' <file-name> 如果要在适当的位置更改它,请添加-i开关: sed -i 's:#.*$::g' <file-name> 这将从任何#删除到行尾,忽略任何上下文.如果你在任何不是注释的地方使用#(比如在字符串中),它也会删除它. 如果评论只能从一行的开头开始,请执行以下操作: sed 's:^#.*$::g' <file-name> 如果它们之前可能有空格,但没有别的,可以: sed 's:^s*#.*$::g' <file-name> 这两个会更安全一些,因为它们可能不会删除代码中#的有效用法,例如字符串. 编辑: 没有一种很好的方法来检测某些东西是否在字符串中.如果能满足你语言的限制,我会使用最后两个. 检测您是否在字符串中的问题是正则表达式无法执行所有操作.有一些问题: >字符串可能跨越线条 # "hello there" # hello there" "# hello there" 如果双引号是定义字符串的唯一方法,双引号将永远不会出现在注释中,并且字符串不能跨越多行,请尝试以下方法: sed 's:#[^"]*$::g' <file-name> 这是很多先决条件,但如果他们都坚持下去,你就是在做生意.否则,我担心你是SOL,你最好用Python之类的东西来编写它,在那里你可以做更高级的逻辑. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |