【问题标题】:Linux, Print all lines in a file, NOT starting withLinux,打印文件中的所有行,而不是以
【发布时间】:2013-02-25 07:55:10
【问题描述】:

我想打印文件的内容,但我想忽略所有以 # 开头的行。我用 grep 和 awk 尝试了一些东西,但它一直在打印整个文件,或者只是打印以 # 开头的行。你可以用正确的方式给我推送,或者使用 grep/awk 命令打印文件中不以 # 开头的任何行。

【问题讨论】:

标签: linux printing awk grep


【解决方案1】:

使用grep-v 选项来否定条件:

grep -v '^#' file

【讨论】:

  • 如果在#之前的行首有前导空格怎么办?
  • @Sigur: '^[[:space:]]*#'
【解决方案2】:

您可以使用! 运算符:

awk '!/^ *#/ { print; }'

这否定了匹配的结果。我还包括了以空格和 # 开头的行,但您可以根据自己的喜好定制正则表达式。

【讨论】:

    【解决方案3】:

    您可以使用 grep 使用 -v 选项排除所有以 # 开头的行

    grep -v '^#' filename
    

    如果你是sed的粉丝:

    sed '/^#/d' filename
    

    【讨论】:

    • 两个很好的例子。但是,在 sed 示例中,您不需要 .* 部分。
    • @cmevoli - 是的,因为行首的 # 足以用于删除命令:)
    【解决方案4】:

    这也会在# 之前省略带有空格的行:

    awk '$1!~/^#/' file
    

    grep -v '^[[:blank:]]*#' file
    

    【讨论】:

      【解决方案5】:

      这里是grep PCRE方式,

      grep -P '^(?!#)' file
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-04-25
        • 1970-01-01
        • 2019-10-24
        • 2021-03-09
        • 2018-12-27
        • 2012-11-13
        • 2015-10-14
        • 1970-01-01
        相关资源
        最近更新 更多