网上很多关于grep
过滤#
注释的方法都是 grep -v '^#'
。
使用后发现这种方法有缺陷,就是有些注释并不是以#
开头的,而是带有空格然后再是#
。
于是就自己研究了下“正确”的过滤空行+注释的方法。
grep -Ev '^$|^\s*#'
^$
匹配空行。
^\s*#
与原来的^#
相比,增加了使用 \s*
来匹配 #
前面可能会出现的空格。
注: 注释#
在正文后方的代码行不会有影响。
例如nginx.conf的原配置文件
[root@master-1:/usr/local]# cat /etc/nginx/nginx.conf
user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;
events {
worker_connections 768;
# multi_accept on;
}
http {
##
# Basic Settings
##
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
# server_tokens off;
# server_names_hash_bucket_size 64;
# server_name_in_redirect off;
include /etc/nginx/mime.types;
defau