2012年10月13日土曜日

grepコマンドでコメント行と空白行を非表示にする


grepコマンドを利用してでコメント行と空白行を非表示にする方法です。
httpd.confやsmb.conf等の設定ファイルはやたらとコメント文が多いので
それらを非表示にしてズバリ設定内容だけ確認したい場合に便利です。

OS: CentOS 6.3(64-bit)
grep: 2.6.3


■コメント行と空白行を非表示
[root@cent63 ~]# grep -v "^#\|^$" /etc/httpd/conf/httpd.conf ServerTokens OS ServerRoot "/etc/httpd" PidFile run/httpd.pid Timeout 60 KeepAlive Off MaxKeepAliveRequests 100 KeepAliveTimeout 15 (以下省略)
「#」で始まるコメント行を非表示 → 「^#」
空行を非表示 → 「^$」

■コメント前にタブがあっても非表示にする
[root@cent63 ~]# grep -v "^[^t]*#\|^$" /etc/httpd/conf/httpd.conf ServerTokens OS ServerRoot "/etc/httpd" PidFile run/httpd.pid Timeout 60 KeepAlive Off MaxKeepAliveRequests 100 KeepAliveTimeout 15 (以下省略)
これだと前述となんら変わらないように見えるので、出力行数で確認
[root@cent63 ~]# grep -v "^#\|^$" /etc/httpd/conf/httpd.conf | wc -l 238 [root@cent63 ~]# grep -v "^[^t]*#\|^$" /etc/httpd/conf/httpd.conf | wc -l 225 [root@cent63 ~]#
確かにタブの後に#がある行も非表示となった。

■smb.confの有効行だけ表示するにはもう一工夫が必要
[root@cent63 ~]# grep -v "^[^t]$\|^[^t]*#\|^$\|^#\|^;" /etc/samba/smb.conf [global] workgroup = MYGROUP server string = Samba Server Version %v log file = /var/log/samba/log.%m max log size = 50 security = user passdb backend = tdbsam load printers = yes cups options = raw [homes] comment = Home Directories browseable = no writable = yes [printers] comment = All Printers path = /var/spool/samba browseable = no guest ok = no writable = no printable = yes [root@cent63 ~]#

以上です。小ネタですみません。

0 件のコメント:

コメントを投稿