grep 命令系列:如何只查看配置文件中未被注释的有效配置行

简介:

grep 命令系列:如何只查看配置文件中未被注释的有效配置行




大多数的Linux和类Unix系统的配置文件中都有许多的注释行,但是有时候我只想看其中的有效配置行。那我怎么才能只看到quid.conf或httpd.conf这样的配置文件中的非注释命令行呢?怎么去掉这些注释或者空行呢?

我们可以使用 UNIX/BSD/OS X/Linux 这些操作系统自身提供的 grep,sed,awk,perl或者其他文本处理工具来查看配置文件中的有效配置命令行。

grep 命令示例——去掉注释

可以按照如下示例使用grep命令:


  
  
  1. $ grep -v "^#" /path/to/config/file
  2. $ grep -v "^#" /etc/apache2/apache2.conf

示例输出:


  
  
  1. ServerRoot "/etc/apache2"
  2. LockFile /var/lock/apache2/accept.lock
  3. PidFile ${APACHE_PID_FILE}
  4. Timeout 300
  5. KeepAlive On
  6. MaxKeepAliveRequests 100
  7. KeepAliveTimeout 15
  8. <IfModule mpm_prefork_module>
  9. StartServers 5
  10. MinSpareServers 5
  11. MaxSpareServers 10
  12. MaxClients 150
  13. MaxRequestsPerChild 0
  14. </IfModule>
  15. <IfModule mpm_worker_module>
  16. StartServers 2
  17. MinSpareThreads 25
  18. MaxSpareThreads 75
  19. ThreadLimit 64
  20. ThreadsPerChild 25
  21. MaxClients 150
  22. MaxRequestsPerChild 0
  23. </IfModule>
  24. <IfModule mpm_event_module>
  25. StartServers 2
  26. MaxClients 150
  27. MinSpareThreads 25
  28. MaxSpareThreads 75
  29. ThreadLimit 64
  30. ThreadsPerChild 25
  31. MaxRequestsPerChild 0
  32. </IfModule>
  33. User ${APACHE_RUN_USER}
  34. Group ${APACHE_RUN_GROUP}
  35. AccessFileName .htaccess
  36. <Files ~ "^\.ht">
  37. Order allow,deny
  38. Deny from all
  39. Satisfy all
  40. </Files>
  41. DefaultType text/plain
  42. HostnameLookups Off
  43. ErrorLog /var/log/apache2/error.log
  44. LogLevel warn
  45. Include /etc/apache2/mods-enabled/*.load
  46. Include /etc/apache2/mods-enabled/*.conf
  47. Include /etc/apache2/httpd.conf
  48. Include /etc/apache2/ports.conf
  49. LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
  50. LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
  51. LogFormat "%h %l %u %t \"%r\" %>s %O" common
  52. LogFormat "%{Referer}i -> %U" referer
  53. LogFormat "%{User-agent}i" agent
  54. CustomLog /var/log/apache2/other_vhosts_access.log vhost_combined
  55. Include /etc/apache2/conf.d/
  56. Include /etc/apache2/sites-enabled/

想要跳过其中的空行,可以使用 egrep 命令, 示例:


  
  
  1. egrep -v "^#|^$" /etc/apache2/apache2.conf
  2. ## or pass it to the page such as more or less ##
  3. egrep -v "^#|^$" /etc/apache2/apache2.conf | less
  4. ## Bash function ######################################
  5. ## or create function or alias and use it as follows ##
  6. ## viewconfig /etc/squid/squid.conf ##
  7. #######################################################
  8. viewconfig(){
  9. local f="$1"
  10. [ -f "$1" ] && command egrep -v "^#|^$" "$f" || echo "Error $1 file not found."
  11. }

示例输出:

Fig.01: Unix/Linux Egrep Strip Out Comments Blank Lines

图 01: Unix/Linux Egrep 除去注释行和空行

理解 grep/egrep 命令行选项

-v 选项,选择出不匹配的命令行。该选项适用于所有基于posix的系统。正则表达式 ^$ 匹配出所有的非空行,^# 匹配出所有的不以“#”开头的非注释行。

sed 命令示例

可以按照如下示例使用 GNU 上的 sed 命令:


  
  
  1. $ sed '/ *#/d; /^ *$/d' /path/to/file
  2. $ sed '/ *#/d; /^ *$/d' /etc/apache2/apache2.conf

GNU 或 BSD 上的 sed 也可以修改配置文件。下面的命令的作用是原地编辑文件,并以特定(比如 .bak)备份文件:


  
  
  1. sed -i'.bak.2015.12.27' '/ *#/d; /^ *$/d' /etc/apache2/apache2.conf

更多信息见参考手册 - grep(1)sed(1)








本文来自云栖社区合作伙伴“Linux中国”
原文发布时间为:2013-04-02.
相关文章
|
缓存 索引
ES经典面试题:谈谈filter和query有什么区别?
ES经典面试题:谈谈filter和query有什么区别?
795 0
ES经典面试题:谈谈filter和query有什么区别?
|
缓存 Cloud Native Java
Java工具篇之Reactive 反应式编程
reactive 是一种新的编程思想, 如同名字一样, 反应式编程。而Reactor 是一个工具包,类似于 Spring一样。这点我们可以直接在Spring的官网上可以看到。本篇基于小编自己的学习进行总结。
3507 0
Java工具篇之Reactive 反应式编程
|
消息中间件 Java
ActiveMQ调优方案
讨论ActiveMQ性能调优的方向,提供调优参考。
762 0
|
监控 架构师 Java
JVM进阶调优系列(6)一文详解JVM参数与大厂实战调优模板推荐
本文详述了JVM参数的分类及使用方法,包括标准参数、非标准参数和不稳定参数的定义及其应用场景。特别介绍了JVM调优中的关键参数,如堆内存、垃圾回收器和GC日志等配置,并提供了大厂生产环境中常用的调优模板,帮助开发者优化Java应用程序的性能。
|
缓存 监控 测试技术
掌握容器化持续集成/持续部署(CI/CD)的最佳实践
【10月更文挑战第8天】本文介绍了容器化持续集成/持续部署(CI/CD)的最佳实践,涵盖容器化CI/CD的概念、优势和实施步骤。通过使用容器技术,可以实现环境一致性、快速迭代和易于扩展,提高软件开发的效率和可靠性。文章还详细讨论了编写高效的Dockerfile、自动化测试、安全性、监控和日志管理等方面的最佳实践。
|
监控
zabbix如何添加自定义监控项
zabbix如何添加自定义监控项
812 0
|
SQL 运维 关系型数据库
记一次 MySQL 主从同步异常的排查记录,百转千回!
这篇文章主要讲述了在 MySQL 主从同步过程中遇到的一个问题,即从库的 SQL 线程因 Relay Log 损坏导致同步停止。作者首先介绍了现象,从库的 Slave_IO_Running 正常,但 Slave_SQL_Running 停止,报错信息提示可能是 binlog 或 relay log 文件损坏。
603 7
|
人工智能 Linux 开发工具
魔搭社区GGUF模型怎么玩!看这篇就够了
近期,Qwen2系列模型家族发布了系列GGUF格式模型。通过llama.cpp/Ollama等生态的发展,很多大语言模型都支持GGUF格式,极大地简化了大语言模型的应用流程,让即便是模型领域的初学者,只有一台CPU笔记本,也能轻松上手顶尖的AI技术。
|
缓存 关系型数据库 MySQL
Docker 下载加速
Docker 下载加速
1346 1
|
存储 NoSQL 关系型数据库
Redis 实战篇:巧用数据类型实现亿级数据统计
Redis 实战篇:巧用数据类型实现亿级数据统计
408 0