Linux / UNIX 仅查看配置文件指令(配置文件的未注释行)
大多数Linux 和类 UNIX 系统配置文件都使用注释来记录,但有时我只需要查看配置文件中的配置文本行。如何才能从 squid.conf 或 httpd.conf 文件中查看未注释的配置文件指令?如何才能在 Linux 或类 UNIX 系统上删除注释和空行?
仅查看配置文件中未注释的文本行
使用 grep、sed、awk、perl 或 UNIX / BSD / OS X / Linux 操作系统提供的任何其他文本处理实用程序。
仅查看配置文件中未注释的文本行
教程详细信息 | |
---|---|
难度等级 | 简单的 |
Root 权限 | 不 |
要求 | grep/egrep/sed |
预计阅读时间 | 2 分钟 |
grep 命令示例以删除数据
您可以按如下方式使用 gerp 命令:
示例输出:
$ grep -v "^#" /path/to/config/file
$ grep -v "^#" /etc/apache2/apache2.conf
ServerRoot "/etc/apache2" LockFile /var/lock/apache2/accept.lock PidFile ${APACHE_PID_FILE} Timeout 300 KeepAlive On MaxKeepAliveRequests 100 KeepAliveTimeout 15 <IfModule mpm_prefork_module> StartServers 5 MinSpareServers 5 MaxSpareServers 10 MaxClients 150 MaxRequestsPerChild 0 </IfModule> <IfModule mpm_worker_module> StartServers 2 MinSpareThreads 25 MaxSpareThreads 75 ThreadLimit 64 ThreadsPerChild 25 MaxClients 150 MaxRequestsPerChild 0 </IfModule> <IfModule mpm_event_module> StartServers 2 MaxClients 150 MinSpareThreads 25 MaxSpareThreads 75 ThreadLimit 64 ThreadsPerChild 25 MaxRequestsPerChild 0 </IfModule> User ${APACHE_RUN_USER} Group ${APACHE_RUN_GROUP} AccessFileName .htaccess <Files ~ "^\.ht"> Order allow,deny Deny from all Satisfy all </Files> DefaultType text/plain HostnameLookups Off ErrorLog /var/log/apache2/error.log LogLevel warn Include /etc/apache2/mods-enabled/*.load Include /etc/apache2/mods-enabled/*.conf Include /etc/apache2/httpd.conf Include /etc/apache2/ports.conf LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined LogFormat "%h %l %u %t \"%r\" %>s %O" common LogFormat "%{Referer}i -> %U" referer LogFormat "%{User-agent}i" agent CustomLog /var/log/apache2/other_vhosts_access.log vhost_combined Include /etc/apache2/conf.d/ Include /etc/apache2/sites-enabled/
要抑制空行,使用egrep 命令,运行:
egrep -v "^#|^$" /etc/apache2/apache2.conf ## or pass it to the page such as more or less ## egrep -v "^#|^$" /etc/apache2/apache2.conf | less ## Bash function ###################################### ## or create function or alias and use it as follows ## ## viewconfig /etc/squid/squid.conf ## ####################################################### viewconfig(){ local f="$1" [ -f "$1" ] && command egrep -v "^#|^$" "$f" || echo "Error $1 file not found." }
示例输出:
了解 grep/egrep 命令行选项
该-v选项反转匹配的含义,以选择不匹配的行。该选项应适用于所有基于 posix 的系统。正则表达式^$匹配并删除所有空白行,^#匹配并删除所有以“#”开头的注释。
sed 命令示例
GNU / sed 命令的使用方法如下:
GNU 或 BSD sed 也可以更新您的配置文件。语法如下,用于就地编辑文件,并使用指定的扩展名(例如 .bak)保存备份:
$ sed '/ *#/d; /^ *$/d' /path/to/file
$ sed '/ *#/d; /^ *$/d' /etc/apache2/apache2.conf
sed -i'.bak.2015.12.27' '/ *#/d; /^ *$/d' /etc/apache2/apache2.conf
有关详细信息,请参阅手册页 –
本条目是Linux / UNIX grep 命令教程系列中的第 7 篇(共7 篇)。继续阅读本系列的其余部分: