天天看點

grep使用小結

grep博大精深,本文僅持續更新在工作中頻繁使用的方法。

<code>擷取不是空行和注釋的内容:</code>

<code>grep</code> <code>^[^</code><code>#]  file1</code>

<code>grep</code> <code>-</code><code>v</code> <code>"^#"</code><code>|</code><code>grep</code> <code>-</code><code>v</code> <code>"^$"</code> <code>file1</code>

<code>grep</code> <code>-Ev </code><code>"^#|^$"</code> <code>file1</code>

<code>擷取指定内容:</code>

<code>grep</code> <code>"05/Mar/2013"</code> <code>origin.log &gt; 0305.log</code>

<code>顔色顯示:</code>

<code>grep</code> <code>--color</code>

<code>grep</code> <code>-E </code>

<code>提取統計日志中,關于http code的4xx,5xx和0結尾的行</code>

<code>awk</code> <code>'{count[$2]+=$1};END{for (c in count) print c, count[c]}'</code> <code>*.stat |</code><code>sort</code> <code>|</code><code>uniq</code> <code>|</code><code>sort</code> <code>-nr |</code><code>awk</code> <code>'$1&gt;100 {print $0}'</code> <code>|</code><code>grep</code> <code>-E </code><code>'(^[0-9]+ [4-5][0-9][0-9]$)|(^[0-9]+ 0$)'</code> <code>|</code><code>more</code>

<code>46255 0</code>

<code>967 504</code>

<code>218 502</code>

<code>2 403</code>

<code>1 503</code>

<code>grep</code> <code>-o  僅顯示比對的字元</code>

<code>擷取IP</code>

<code>grep</code> <code>-o -E </code><code>"[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}"</code>

<code>grep</code> <code>-Po  使用 perl 的正規表達式,典型應用是零寬斷言,以下是示例:</code>

<code>擷取字元串:access.xxxx.log 中間的 xxxx,即:在 </code><code>"access."</code> <code>和 </code><code>".log"</code> <code>中間的字元串</code>

<code># echo '/var/log/nginx/access.www.test.com-443.log' |grep -Po '(?&lt;=access.).*(?=.log)'</code>

<code>www.</code><code>test</code><code>.com-443</code>

<code>進一步隻比對 </code><code>".com"</code> <code>結尾的字元串:</code>

<code># echo '/var/log/nginx/access.www.test.com-8080.log' |grep -Po '(?&lt;=access.).*.com(?=-\d+.log|.log)'     </code>

<code>www.</code><code>test</code><code>.com</code>

<code># echo '/var/log/nginx/access.www.test.com.log' |grep -Po '(?&lt;=access.).*.com(?=-\d+.log|.log)'     </code>

<code>列印檔案名:</code>

<code>grep</code> <code>--color -H </code><code>"^wget"</code> <code>/home/web/task/crontab_</code><code>*.sh </code>

<code>擷取url的最右一列的名字</code>

<code>for</code> <code>i </code><code>in</code> <code>$(</code><code>grep</code> <code>"^wget"</code> <code>/home/web/task/crontab_</code><code>*.sh |</code><code>cut</code> <code>-d</code><code>' '</code> <code>-f2); </code><code>do</code> <code>echo</code> <code>${i</code><code>##*/};done |sort -n |uniq</code>

<code>查找某個目錄下包含某個字元檔案:</code>

<code># grep 'svn_url_port_filter' -nr .</code>

<code>.</code><code>/lib/svn</code><code>.php:21:  $url = svn_url_port_filter($url);    </code>

<code>.</code><code>/lib/svn</code><code>.php:71:    $url = svn_url_port_filter($url);</code>

<code>.</code><code>/lib/svn</code><code>.php:80:    $url = svn_url_port_filter($url);</code>

<code>.</code><code>/lib/svn</code><code>.php:229:</code><code>function</code> <code>svn_url_port_filter($url) </code>

<code>或者</code>

<code># find . -exec grep -nH 'svn_url_port_filter' {} \;</code>

<code>.</code><code>/lib/svn</code><code>.php:229:</code><code>function</code> <code>svn_url_port_filter($url)</code>

本文轉自 pcnk 51CTO部落格,原文連結:http://blog.51cto.com/nosmoking/1659733,如需轉載請自行聯系原作者