2013年2月6日 星期三

linux 抓檔案match的行數(grep)

Counting total number of matches with grep instead of just how many lines match
http://superuser.com/questions/339522/counting-total-number-of-matches-with-grep-instead-of-just-how-many-lines-match

$ grep -o -E "your expression" file |wc -l

計算資料夾下matches的個數( 類似sublime ctrl+shift+f 計算出來的matches數,注意: ThinkPHP 自動產生的 Runtime/Logs log檔被match多次時這邊只算一次 )
$ grep -r -o "discard_balance"  . | wc -l
使用git grep把哪些檔案被match了幾次列出來:
$ git grep -c -w "count"
-w 整個字匹配
-c 算出match了幾行,一行match多次只算一次
$ git grep -c -w "count" | wc -l 與sublime ctrl+shift+f 算出來match的行數相同(要注意被gitignore的檔案subllime也會算),git grep目前只會檢查到行數,無法到次數

Regular expression to match string not containing a word?
http://stackoverflow.com/questions/406230/regular-expression-to-match-string-not-containing-a-word
If you're just using it for grep, you can use grep -v hede to get all lines which do not contain hede.

我使用过的Linux命令之wc - 统计文件行数、单词数或字节数
http://codingstandards.iteye.com/blog/1132879

$ wc -l <file>
打印指定文件的文本行?。(l=小?L)


自己的解法:

$ grep -v .*\.tw /etc/developers
列出非台灣開發者


$ grep -o -E ".*\.tw" /etc/developers |wc -l
列出台灣開發者總數

grep中使用 AND, OR, NOT
http://www.thegeekstuff.com/2011/10/grep-or-and-not-operators/

OR -
$ grep -E 'pattern1|pattern2' filename

$ egrep 'pattern1|pattern2' filename

$ grep -e pattern1 -e pattern2 filename
AND -
$ grep -E 'pattern1.*pattern2' filename => grep -E 'pattern1.*pattern2|pattern2.*pattern1' filename

$ grep -E 'pattern1' filename | grep -E 'pattern2'
NOT -
$ grep -v 'pattern1' filename

CentOS查某個套件是否安裝
$ rpm -qa | grep mysql
(空)
因為grep 大小寫敏感所以查不到,
$ rpm -qa | grep -i mysql
MySQL-test-5.6.25-1.el6.x86_64
MySQL-server-5.6.25-1.el6.x86_64
MySQL-client-5.6.25-1.el6.x86_64
MySQL-embedded-5.6.25-1.el6.x86_64
MySQL-shared-5.6.25-1.el6.x86_64
MySQL-devel-5.6.25-1.el6.x86_64
MySQL-shared-compat-5.6.25-1.el6.x86_64
rpm -ivh 安裝的東西用 rpm -qa 去找一定有

篩選日誌內容

https://www.cyberciti.biz/faq/grep-regular-expressions/  Regular expressions in grep ( regex ) with examples
使用egrep,這樣""裡面才是使用我習慣的正則
如,篩選出6/3和6/4的日誌,將內容篩選出來後再輔以sublime做處理,找出你想要的資料
$ egrep "(2022-06-03|2022-06-04).*INFO" laravel.log > laravel-2.sql




沒有留言:

張貼留言