linux命令grep
Ⅰ linux grep命令,怎麼取兩個字元串之間的內容比如,abcdefg我要找ab到fg之
這個需求不能用grep來實現,本質上是字元串的切割查找提取子串,可用awk來實現,例
如
echoabcdefghelloword|awk-vhead="ab"-vtail="fg"'{printsubstr($0,index($0,head)+length(head),index($0,tail)-index($0,head)-length(head))}'
以上關鍵是計算出開頭標記"ab",和結束標記"fg" 在字元串中的位置
執行結果就是
cde
Ⅱ linux中grep命令的使用
1、linux系統中grep命令是一種強大的文本搜索工具,它能使用正則表達式搜索文本,並把匹配的行列印出來。grep全稱是Global Regular Expression Print,表示全局正則表達式版本,它的使用許可權是所有用戶。
2、格式
grep[options]
3、主要參數
[options]主要參數:
-c:只輸出匹配行的計數。
-I:不區分大小寫(只適用於單字元)。
-h:查詢多文件時不顯示文件名。
-l:查詢多文件時只輸出包含匹配字元的文件名。
-n:顯示匹配行及行號。
-s:不顯示不存在或無匹配文本的錯誤信息。
-v:顯示不包含匹配文本的所有行。
pattern正則表達式主要參數:
\:忽略正則表達式中特殊字元的原有含義。
^:匹配正則表達式的開始行。
$: 匹配正則表達式的結束行。
\<:從匹配正則表達式的行開始。
\>:到匹配正則表達式的行結束。
[ ]:單個字元,如[A]即A符合要求。
[ - ]:范圍,如[A-Z],即A、B、C一直到Z都符合要求。
。:所有的單個字元。
* :有字元,長度可以為0。
4、grep命令使用簡單實例:
$ grep 『test』d*
顯示所有以d開頭的文件中包含test的行。
$ grep 『test』aa bb cc
顯示在aa,bb,cc文件中匹配test的行。
$ grep『[a-z]\{5\}』 aa
顯示所有包含每個字元串至少有5個連續小寫字元的字元串的行。
Ⅲ linux中grep和find的區別
1.
linux中的find等同與win中的搜索文件。
find是在磁碟/分區中找到文件,可以配type可以配size
time等,通過文件名或文件大小或訪問時間找到指定文件。
2.
linux中的grep等同與win中的findstr命令。可以在一個txt文本中截取到有特定關鍵字的行,並顯示出來。
grep也可以通過關鍵字,在一個文件夾下查找多個有這些關鍵字的文件,並生成結果。
3.
可以詳細參考find命令在網路的文庫文檔
http://wenku..com/view/5e4070160b4e767f5acfce0b.html
Ⅳ linux grep命令
grep -li 'error' --include=systemout.2012-11-*.log
--include用來通配你需要查找的文件名
======================================
======================================
我補充回答:
cd /home/tomcat/logs
grep -i 'error' systemout.2012-11-*.log
這樣總行了吧
Ⅳ linux中awk以及grep命令
ls|xargs grep -E "^rec|^orec" | awk -F "|" '{if($68==0)print $1}'|awk -F: '{print $1}'|sort|uniq
Ⅵ linux下查看進程的命令,ps | grep 和 ps aux | grep 有什麼區別啊
ps | grep 和 ps aux | grep兩個命令差別在於ps的參數aux,
ps是顯示當前狀態處於running的進程,grep表示在這些里搜索,而ps aux是顯示所有進程和其狀態。
Ⅶ windows下類似linux下grep搜索命令
windows下的類似linux下的grep命令——findstr
經常用linux下的grep命令,比如:
netstat -an|grep 1521
其實windows下也有一個類似的命令findstr,比如:
C:/Windows/system32>netstat -an|findstr 1521
TCP 0.0.0.0:1521 0.0.0.0:0 LISTENING
TCP 192.168.1.100:1521 192.168.1.100:49686 ESTABLISHED
TCP 192.168.1.100:1521 192.168.1.100:49701 ESTABLISHED
TCP 192.168.1.100:1521 192.168.1.100:49702 ESTABLISHED
TCP 192.168.1.100:1521 192.168.1.100:49706 ESTABLISHED
TCP 192.168.1.100:1521 192.168.1.100:49707 ESTABLISHED
TCP 192.168.1.100:1521 192.168.1.100:49753 ESTABLISHED
TCP 192.168.1.100:49686 192.168.1.100:1521 ESTABLISHED
TCP 192.168.1.100:49701 192.168.1.100:1521 ESTABLISHED
TCP 192.168.1.100:49702 192.168.1.100:1521 ESTABLISHED
TCP 192.168.1.100:49706 192.168.1.100:1521 ESTABLISHED
TCP 192.168.1.100:49707 192.168.1.100:1521 ESTABLISHED
TCP 192.168.1.100:49753 192.168.1.100:1521 ESTABLISHED
TCP [::]:1521 [::]:0 LISTENING
當然windows下還有一個find命令,比如:
C:/Windows/system32>netstat -an|find "1521"
TCP 0.0.0.0:1521 0.0.0.0:0 LISTENING
TCP 192.168.1.100:1521 192.168.1.100:49686 ESTABLISHED
TCP 192.168.1.100:1521 192.168.1.100:49701 ESTABLISHED
TCP 192.168.1.100:1521 192.168.1.100:49702 ESTABLISHED
TCP 192.168.1.100:1521 192.168.1.100:49706 ESTABLISHED
TCP 192.168.1.100:1521 192.168.1.100:49707 ESTABLISHED
TCP 192.168.1.100:1521 192.168.1.100:49753 ESTABLISHED
TCP 192.168.1.100:49686 192.168.1.100:1521 ESTABLISHED
TCP 192.168.1.100:49701 192.168.1.100:1521 ESTABLISHED
TCP 192.168.1.100:49702 192.168.1.100:1521 ESTABLISHED
TCP 192.168.1.100:49706 192.168.1.100:1521 ESTABLISHED
TCP 192.168.1.100:49707 192.168.1.100:1521 ESTABLISHED
TCP 192.168.1.100:49753 192.168.1.100:1521 ESTABLISHED
TCP [::]:1521 [::]:0 LISTENING
兩個命令的區別是find需要用引號引起來。
Ⅷ linux的grep查詢命令
grep默認只能識別基本的正則表達式,如果需要高級的,需要這樣:
grep -E 'A.*B|B.*A' filename
可以找到符合要求的,或者使用awk:
awk '/A/&&/B/' filename
Ⅸ linux命令里,grep * 是什麼意思
任意一個位元組 . 與重復位元組 *
這兩個符號在正則表達式的意義如下:
. (小數點):代表『一定有一個任意位元組』的意思;
* (星號):代表『重復前一個字元, 0 到無窮多次』的意思,為組合形態
假設我需要找出 g??d 的字串,亦即共有四個位元組, 起頭是 g 而結束是 d ,我可以這樣做:
[root@www ~]# grep -n 'g..d' regular_express.txt
1:"Open Source" is a good mechanism to develop programs.
9:Oh! The soup taste good.
16:The world <Happy> is the same with "glad".
因為強調 g 與 d 之間一定要存在兩個位元組,因此,第 13 行的 god 與第 14 行的 gd 就不會被列出來啦!
如果我想要列出有 oo, ooo, oooo 等等的數據, 也就是說,至少要有兩個(含) o 以上,該如何是好?
因為 * 代表的是『重復 0 個或多個前面的 RE 字元』的意義, 因此,『o*』代表的是:『擁有空位元組或一個 o 以上的位元組』,因此,『 grep -n 'o*' regular_express.txt 』將會把所有的數據都列印出來終端上!
當我們需要『至少兩個 o 以上的字串』時,就需要 ooo* ,亦即是:
[root@www ~]# grep -n 'ooo*' regular_express.txt
1:"Open Source" is a good mechanism to develop programs.
2:apple is my favorite food.
3:Football game is not use feet only.
9:Oh! The soup taste good.
18:google is the best tools for search keyword.
19:goooooogle yes!
如果我想要字串開頭與結尾都是 g,但是兩個 g 之間僅能存在至少一個 o ,亦即是 gog, goog, gooog.... 等等,那該如何?
[root@www ~]# grep -n 'goo*g' regular_express.txt
18:google is the best tools for search keyword.
19:goooooogle yes!
如果我想要找出 g 開頭與 g 結尾的行,當中的字元可有可無
[root@www ~]# grep -n 'g.*g' regular_express.txt
1:"Open Source" is a good mechanism to develop programs.
14:The gd software is a library for drafting programs.
18:google is the best tools for search keyword.
19:goooooogle yes!
20:go! go! Let's go.
因為是代表 g 開頭與 g 結尾,中間任意位元組均可接受,所以,第 1, 14, 20 行是可接受的喔! 這個 .* 的 RE 表示任意字元是很常見的.