【问题标题】:Remove comments following # (number sign) in shell [duplicate]删除shell中#(数字符号)之后的注释[重复]
【发布时间】:2017-06-08 10:37:11
【问题描述】:

我有一个文本文件text0.txt 喜欢

# text0.txt
# This is comment
Hello, I like banana.  # more comments
bra bra bra...

问题是命令是什么

$ some_command text0.txt

哪个输出

Hello, I like banana.  
bra bra bra...

到标准输出。

我正在使用 bash。 谢谢。

【问题讨论】:

  • 你有没有尝试过自己研究这个?
  • 感谢您的指点。实际上,它解决了问题。我没有使用 sed 的想法,也无法搜索“#”作为关键字。
  • 我刚刚在谷歌上搜索了remove comments bash

标签: bash


【解决方案1】:

您想删除以# 开头的行并删除# 以及行中其他任何位置的任何后续字符。该描述实际上定义了sed 脚本的外观:

sed -e '/^#/d' -e 's/[[:space:]]*#.*//' text0.txt

这也会删除行尾# 之前的所有空格。如果您坚持,您可以将其合并为一个论点:

sed '/^#/d; s/[[:space:]]*#.*//' text0.txt

就个人而言,我认为单独的操作在单独的参数中时更容易阅读,但这是您可以自己做出的选择。

请注意,不需要运行两个(或更多)命令;一个就够了。

【讨论】:

    【解决方案2】:

    使用 awk:

    awk '{a=length($0);gsub("#.*","",$0); if(a==0 || length($0)>0)print $0}' filename
    

    【讨论】:

      猜你喜欢
      • 2017-04-22
      • 1970-01-01
      • 2013-08-05
      • 1970-01-01
      • 1970-01-01
      • 2019-11-14
      • 1970-01-01
      • 1970-01-01
      • 2012-03-08
      相关资源
      最近更新 更多