UDN-企业互联网技术人气社区

板块导航

浏览  : 2081
回复  : 0

[运维] Linux下如何用grep命令只查看配置文件中未被注释的有效配...

[复制链接]
哥屋恩的头像 楼主
发表于 2016-10-10 13:29:06 | 显示全部楼层 |阅读模式
  大多数的Linux和类Unix系统的配置文件中都有许多的注释行,但是有时候我只想看其中的有效配置行。那我怎么才能只看到quid.conf或httpd.conf这样的配置文件中的非注释命令行呢?怎么去掉这些注释或者空行呢?

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

5.jpg


  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.   StartServers 5

  9.   MinSpareServers 5

  10.   MaxSpareServers 10

  11.   MaxClients 150

  12.   MaxRequestsPerChild 0

  13.   StartServers 2

  14.   MinSpareThreads 25

  15.   MaxSpareThreads 75

  16.   ThreadLimit 64

  17.   ThreadsPerChild 25

  18.   MaxClients 150

  19.   MaxRequestsPerChild 0

  20.   StartServers 2

  21.   MaxClients 150

  22.   MinSpareThreads 25

  23.   MaxSpareThreads 75

  24.   ThreadLimit 64

  25.   ThreadsPerChild 25

  26.   MaxRequestsPerChild 0

  27.   User ${APACHE_RUN_USER}

  28.   Group ${APACHE_RUN_GROUP}

  29.   AccessFileName .htaccess

  30.   Order allow,deny

  31.   Deny from all

  32.   Satisfy all

  33.   DefaultType text/plain

  34.   HostnameLookups Off

  35.   ErrorLog /var/log/apache2/error.log

  36.   LogLevel warn

  37.   Include /etc/apache2/mods-enabled/*.load

  38.   Include /etc/apache2/mods-enabled/*.conf

  39.   Include /etc/apache2/httpd.conf

  40.   Include /etc/apache2/ports.conf

  41.   LogFormat "%v:%p %h %l %u %t /"%r/" %>s %O /"%{Referer}i/" /"%{User-Agent}i/"" vhost_combined

  42.   LogFormat "%h %l %u %t /"%r/" %>s %O /"%{Referer}i/" /"%{User-Agent}i/"" combined

  43.   LogFormat "%h %l %u %t /"%r/" %>s %O" common

  44.   LogFormat "%{Referer}i -> %U" referer

  45.   LogFormat "%{User-agent}i" agent

  46.   CustomLog /var/log/apache2/other_vhosts_access.log vhost_combined

  47.   Include /etc/apache2/conf.d/

  48.   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.   }
复制代码


  示例输出:

4.jpg

  图 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)。

原文作者:佚名  来源:开发者头条

相关帖子

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们
联系我们
  • 电话:010-86393388
  • 邮件:udn@yonyou.com
  • 地址:北京市海淀区北清路68号
移动客户端下载
关注我们
  • 微信公众号:yonyouudn
  • 扫描右侧二维码关注我们
  • 专注企业互联网的技术社区
版权所有:用友网络科技股份有限公司82041 京ICP备05007539号-11 京公网网备安1101080209224 Powered by Discuz!
快速回复 返回列表 返回顶部