regex - 如何使用grep/sed打印文件,不包括注释和空白行?

标签 regex perl sed awk grep

我想打印出包含一系列注释的文件,例如:

    </Directory>
    ErrorLog ${APACHE_LOG_DIR}/error.log
    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn
    CustomLog ${APACHE_LOG_DIR}/ssl_access.log combined
    #   SSL Engine Switch:

本质上,文件包含多个缩进级别,其中注释以#符号开头。

grep应该删除空白行,并删除文本前有哈希符号的行(这意味着它们是注释)。

我知道可以通过以下方式删除空白行:grep -v '^$'
但是,如何删除带有前导空格的行,然后删除#符号,并仅打印出具有实际代码的行?我想使用grep和/或sed在bash中执行此操作。

最佳答案

grep:

grep -v '^\s*$\|^\s*\#' temp

在OSX / BSD系统上:
grep -Ev '^\s*$|^\s*\#' temp

关于regex - 如何使用grep/sed打印文件,不包括注释和空白行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17392869/

相关文章:

regex - 带有 epsilon 转换的 NFA 让我们做什么?

javascript -/[\[]/在 JavaScript 中做什么?

string - 在 Perl 中使用 Spreadsheet::ParseExcel,但需要帮助

regex - 提取两个相似字符串之间的行

text - sed 替换单/双引号文本?

php - 不被其他数字包围的 RegEx 数字

python - 如何将正则表达式匹配作为一个完整的字符串返回?

perl - Perl 中基于 Unicode 的 'tweet compressor'

regex - 如何使用 bash/linux 系统命令对分隔文件应用等效的每列清理

linux - 使用 awk 格式化文本