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.
相关文章
|
Windows
解决 在配置文件列表中找不到你的默认配置文件-使用第一个配置文件。请进行检查以确保 "defaultProfile" 与你的某个配置文件的 GUID 相匹配
不用 “netsh winsock reset” 命令解决 “在配置文件列表中找不到你的默认配置文件-使用第一个配置文件。请进行检查以确保 "defaultProfile" 与你的某个配置文件的 GUID 相匹配”
解决 在配置文件列表中找不到你的默认配置文件-使用第一个配置文件。请进行检查以确保 "defaultProfile" 与你的某个配置文件的 GUID 相匹配
|
6月前
|
Linux Shell 开发工具
Linux Vim批量注释和自定义注释
在Vim中,快速批量注释和取消Shell脚本的多行可以使用替换命令。例如,用`:1,10s/^/#/g`在第1到10行行首加`#`注释,`:1,10s/^#//g`则移除这些行的行首`#`。定义快捷键如`:map^P l#&lt;Esc&gt;`(需用Ctrl+V+P生成^P)能一键在当前行添加`#`注释。要取消注释,可以定义`:map^B 0x`来删除行首字符。通过`.vimrc`保存快捷键设置,可使它们在每次启动Vim时生效。
|
Shell Linux Perl
Linux下使用脚本读取参数修改配置文件(一)
Linux下使用脚本读取参数修改配置文件
1133 0
Linux下使用脚本读取参数修改配置文件(一)
|
Linux 开发工具
Linux:vim文本单行替换和全局替换
Linux:vim文本单行替换和全局替换
128 0
|
Shell Linux Perl
shell 定义绝对路径,出错 sed: 未找到命令,脚本功能:替换某一行内容
shell 定义绝对路径,出错 sed: 未找到命令,脚本功能:替换某一行内容
shell 定义绝对路径,出错 sed: 未找到命令,脚本功能:替换某一行内容
|
Linux Shell vr&ar
Linux下使用脚本读取参数修改配置文件(二)
Linux下使用脚本读取参数修改配置文件
197 0
|
Shell Linux 开发工具
5.9 Linux Vim批量注释和自定义注释
使用 Vim 编辑 Shell 脚本,在进行调试时,需要进行多行的注释,每次都要先切换到输入模式,在行首输入注释符”#”再退回命令模式,非常麻烦。
261 0
5.9 Linux Vim批量注释和自定义注释
|
开发工具 机器学习/深度学习 C#