我需要从用户输入行中删除/删除注释而不删除任何代码。例如:Unix/Linux,删除行注释
mail -s 'text' brown < text #comments
如何删除注释并保持代码不变? 我可以删除以#开头的行,但如果它从行中间的某个位置开始,则不能删除。
我想:
echo $line | sed -e 's/\
,但它不工作。任何想法我做错了什么?
另外,如何检测#未用于开始评论的情况? 例如引用#和以#结尾的代码行,因为它们不是注释。
echo $line | sed -e '/^#/d'
在这一行中,#不用作注释,而是用作代码的一部分。我发现我需要检测,如果#在引号内或在#之前没有空格字符。我该如何离开输出?
我想知道您是如何认为您可以自动从我的帖子中的示例文件中删除评论的。 – Jotne
除非您考虑到shell脚本的词法结构,否则不可能完成这项工作。你需要处理单引号字符串,双引号字符串,变量扩展例如'$#'和'$ {#variable}'和'$ {variable#head}',这里是文档(作为开始)。当你能够准确地检测到它们时,在他们所有的荣耀中(记住,引用的字符串可以延伸到多行!),然后你就可以开始检测评论。请注意'echo a#b'回显三个字符加一个换行符。 –