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.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值