覚えると便利な grep オプション
検索結果から除外したいものがある場合
-v オプションを使うと便利
例えば
grep 'sh$' /etc/services
を実行すると
bvcontrol 1236/udp # Daniel J. Walsh cybercash 551/tcp # cybercash cybercash 551/udp # cybercash slush 1966/tcp # Slush slush 1966/udp # Slush novell-zen 2544/tcp # Management Daemon Refresh novell-zen 2544/udp # Management Daemon Refresh trustestablish 2573/tcp # Trust Establish trustestablish 2573/udp # Trust Establish simple-push 3687/tcp # simple-push simple-push 3687/udp # simple-push synchromesh 4548/tcp # Synchromesh synchromesh 4548/udp # Synchromesh fmp 4745/tcp # Funambol Mobile Push fmp 4745/udp # Funambol Mobile Push nfoldman 7393/tcp # nFoldMan Remote Publish nfoldman 7393/udp # nFoldMan Remote Publish
というように tcp と udp の両方がでてくる
でも udp の行はいらない、というのなら
grep 'sh$' /etc/services | grep -v udp
とすれば
udp の結果は除外される
cybercash 551/tcp # cybercash slush 1966/tcp # Slush novell-zen 2544/tcp # Management Daemon Refresh trustestablish 2573/tcp # Trust Establish simple-push 3687/tcp # simple-push synchromesh 4548/tcp # Synchromesh fmp 4745/tcp # Funambol Mobile Push nfoldman 7393/tcp # nFoldMan Remote Publish
これを使えば、結果からコメントアウトされたものを除いて
設定ファイルをみることができる
コメントアウトは
先頭に # がついている行なので
grep -v ^#
を使えば簡単に除外できる
例えば、apache の設定ファイルの
/etc/httpd/conf/httpd.conf
の中から
/var/www/
の行を調べたいけど、
#でコメントアウトされた行は除くというなら
cat /etc/httpd/conf/httpd.conf | grep var/www | grep -v ^#
とすれば
DocumentRoot "/var/www/html" <Directory "/var/www/html"> Alias /icons/ "/var/www/icons/" <Directory "/var/www/icons"> ScriptAlias /cgi-bin/ "/var/www/cgi-bin/" <Directory "/var/www/cgi-bin"> Alias /error/ "/var/www/error/" <Directory "/var/www/error">
というように必要な部分だけみることができる