【linux shell】grep 常用選項
color選項增加顏色渲染
使用拓展正則表示式
如果要使用正則表示式,需要新增-E選項——這意味著使用擴充套件(extended)正則表示式。或者也可以使用預設允許正則表示式的grep命令——egrep。例如:
$ grep -E "[a-z]+" filename
#或者
$ egrep "[a-z]+" filename
僅輸出匹配結果
使用 -o
[root@CentOS ~]# grep word readme
this is the line containing word
[root@CentOS ~]# grep word readme -o
word
翻轉匹配
-v, --invert-match
翻轉匹配即是將不屬於模式的內容輸出
[root@CentOS ~]# grep -v word readme
this is a simple line.
輸出匹配行或者匹配項個數
[root@CentOS ~]# cat readme
this is the line containing word, word
this is a simple line.
[root@CentOS ~]# grep -c word readme
1
[root@CentOS ~]# grep -o word readme |wc -l
2
輸出匹配檔案
-l
[root@CentOS ~]# grep -l word readme out.html
readme
輸出行號
-n
Perl正則表示式
-P
位元組偏移
-b
-b, --byte-offset
Print the 0-based byte offset within the input file before each line of output. If -o (--only-matching) is specified, print the offset
of the matching part itself.
-o
只輸出匹配單詞結果
[[email protected] ~]# grep -b -o word readme
28:word
34:word
39:word
[[email protected] ~]# cat readme
this is the line containing word, word
word
this is a simple line.
遞迴搜尋檔案
-R
[edemon@CentOS tmp]$ grep "open" . -R
./write.c: int fd = open("./tmp.txt",O_WRONLY|O_CREAT|O_TRUNC,0644);
./write.c: perror("tmp.txt open wrongly");
忽略大小寫
-i
[edemon@CentOS tmp]$ echo "HAha" |grep -i "haha"
HAha
多模式匹配
使用-e
選項
[edemon@CentOS tmp]$ echo this is a line |grep -e "is" -e "line" -o
is
is
line
使用檔案
[edemon@CentOS tmp]$ echo -e "is\nline" > pattern_txt
[edemon@CentOS tmp]$ cat pattern_txt
is
line
[edemon@CentOS tmp]$ echo this is a line |grep -f pattern_txt -o
is
is
line
搜尋時包括檔案或排除檔案
include
或 exclude
[edemon@CentOS tmp]$ grep "open" . -r --include *.c
./write.c: int fd = open("./tmp.txt",O_WRONLY|O_CREAT|O_TRUNC,0644);
./write.c: perror("tmp.txt open wrongly");
[edemon@CentOS tmp]$ grep "open" . -r --exclude *.c
排除目錄:--exclude-dir
從檔案中讀取所需排除的檔案列表: --exclude-from FILE
靜默輸出
-q
選項可以使得grep不輸出任何東西到stdout。即使出現出錯。
當返回值是0時,則找到了物件。非0則沒找到。
[edemon@CentOS workspace]$ cat auto.c |grep -q longjmp
[edemon@CentOS workspace]$ echo $?
0
匹配文字上下文輸出
#輸出4後面2行
[edemon@CentOS workspace]$ seq 10 |grep 4 -A 2
4
5
6
#輸出4前面2行
[edemon@CentOS workspace]$ seq 10 |grep 4 -B 2
2
3
4
#輸出4前後兩行
[edemon@CentOS workspace]$ seq 10 |grep 4 -C 2
2
3
4
5
6
其他
edemon@linux:~$ cat tt
“在這個世界上,分裂是最大的痛苦,堤壩的分裂會導致洪災,地表的分裂會導致地震,山巒的分裂會帶來山崩,愛情的分裂會帶來離婚,同樣你和自我的分裂會帶來一生的痛苦和遺憾。人生最大的痛苦莫過於知道該怎麼做卻沒有去做,你會自責,你會對自己不滿意,你會覺得自己是渺小的、不講信譽不可信的。總而言之,就是你開始不信任自己,自信心降低了。”
真正能自控的人是內心和諧的人,他們將自己內心的每一部分需求都當作朋友來看待,這樣每一部分都不會搗亂。這樣的人不是試圖控制或壓制一些缺點,而總能從它們當中找到正面的資訊。
仔細地聆聽一下你內心的聲音,你會聽見,你心中有一個部分在大喊:你整天做令人煩躁和勞累的工作,你太需要休息和娛樂了。現在,你要感謝這個“次人格”對你的關心和幫助,告訴它你一定會去。但此時此地,你必須先把手頭的工作完成。這個時候,你會發現,那些曾經讓你分心的想法不再糾纏你了,它相信了你的承諾。
edemon@linux:~$ grep -n "分裂" tt #tt中包含"分裂"的所有行
1:“在這個世界上,分裂是最大的痛苦,堤壩的分裂會導致洪災,地表的分裂會導致地震,山巒的分裂會帶來山崩,愛情的分裂會帶來離婚,同樣你和自我的分裂會帶來一生的痛苦和遺憾。人生最大的痛苦莫過於知道該怎麼做卻沒有去做,你會自責,你會對自己不滿意,你會覺得自己是渺小的、不講信譽不可信的。總而言之,就是你開始不信任自己,自信心降低了。”
edemon@linux:~$ grep -v "分裂" tt #tt中不包含"分裂"的所有行
真正能自控的人是內心和諧的人,他們將自己內心的每一部分需求都當作朋友來看待,這樣每一部分都不會搗亂。這樣的人不是試圖控制或壓制一些缺點,而總能從它們當中找到正面的資訊。
仔細地聆聽一下你內心的聲音,你會聽見,你心中有一個部分在大喊:你整天做令人煩躁和勞累的工作,你太需要休息和娛樂了。現在,你要感謝這個“次人格”對你的關心和幫助,告訴它你一定會去。但此時此地,你必須先把手頭的工作完成。這個時候,你會發現,那些曾經讓你分心的想法不再糾纏你了,它相信了你的承諾。
edemon@linux:~$ grep -c "分裂" tt #輸出行數
1
edemon@linux:~$ grep -l "分裂" *
grep: c: Is a directory
grep: d: Is a directory
grep: Desktop: Is a directory
grep: Documents: Is a directory
grep: Downloads: Is a directory
grep: e: Is a directory
grep: f: Is a directory
grep: Music: Is a directory
grep: Pictures: Is a directory
grep: pra.link: Is a directory
grep: Public: Is a directory
grep: sda: Is a directory
grep: Templates: Is a directory
tt
grep: Videos: Is a directory
edemon@linux:~$ grep -s "分裂" * #和前者比較少了很多亂七八糟的出錯資訊
tt:“在這個世界上,分裂是最大的痛苦,堤壩的分裂會導致洪災,地表的分裂會導致地震,山巒的分裂會帶來山崩,愛情的分裂會帶來離婚,同樣你和自我的分裂會帶來一生的痛苦和遺憾。人生最大的痛苦莫過於知道該怎麼做卻沒有去做,你會自責,你會對自己不滿意,你會覺得自己是渺小的、不講信譽不可信的。總而言之,就是你開始不信任自己,自信心降低了。
edemon@linux:~$ grep -r doc * #遞迴搜尋當前目錄下含關鍵詞grep的文字內容
grep 使用 -w 後相應的元字元變成普通字元,使用引數x匹配整行
edemon@linux:~$ cat tt
#!/bin/bash
echo "the time is "
date
echo here is :
who
echo
edemon@linux:~$ grep -w echo tt
echo "the time is "
echo here is :
echo
edemon@linux:~$ grep -x echo tt
echo
echo $? 用於輸出上一條命令的退出狀態(返回碼)0表示成功執行,1表示未得到結果,2表示產生語法錯誤
edemon@linux:~$ echo $?
0
edemon@linux:~$ grep -x echo ttt
grep: ttt: No such file or directory
edemon@linux:~$ echo $?
2
edemon@linux:~$ cat tt
ab
ab
cv
ab
edemon@linux:~$ grep -b -w ab tt #列印匹配行距離首部的偏移量
0:ab
3:ab
9:ab #解釋,每一個串計上'\0'
edemon@linux:~$ cat tt
ab ab cv ab
edemon@linux:~$ grep -b -o -w ab tt #匹配詞的偏移量
0:ab
3:ab
9:ab
edemon@linux:~$ grep -b -w ab tt
0:ab ab cv ab
查詢tt檔案中的空白行和非空白行
edemon@linux:~$ grep ^$ tt
edemon@linux:~$ grep ^[^$] tt
精確匹配:
edemon@linux:~$ grep "\<ab\>" tt
ab
edemon@linux:~$ grep -w ab tt
ab
grep 命令族:
grep 標準,支援基本正則表示式
egrep (grep -E) 拓展,支援拓展正則表示式
fgrep (grep -F) 快速,不支援正則表示式
不區分大小寫的查詢:
edemon@linux:~$ grep .*[aA].* tt #查詢含a或者A的文字
34.eA
asa
行尾判斷:
edemon@linux:~$ grep -E [^A-Za-z]$ tt
:
213
edemon@linux:~$ grep -E :$ tt
:
相關推薦
【linux shell】grep 常用選項
color選項增加顏色渲染 使用拓展正則表示式 如果要使用正則表示式,需要新增-E選項——這意味著使用擴充套件(extended)正則表示式。或者也可以使用預設允許正則表示式的grep命令——egrep。例如: $ grep -E "[a-z
0082-【Linux-Shell】-標準輸入標準輸出
標準輸入 標準輸出 標準錯誤 command > filename 把把標準輸出重定向到一個新檔案中 command >> filename 把把標準輸出重定向到一個檔案中(追加)
0083-【Linux-Shell】-date命令格式
獲得當天的日期 date +%Y-%m-%d 輸出: 2011-07-28 date1=$(date --date='1 days ago +%Y%m%d') #前一天的日期 date1=$(date --date='2 days ago +%Y%m%d')
網路配置基礎【Linux-shell】
網路配置基礎: A~C類IP地址部分私有不使用在Inter上: A類:10.0.0.0-10.255.255.255 B類:172.16.0.0-172.31.255.255 C類:192.168.
軟體安裝與維護【Linux-shell】
軟體安裝與維護: 常用Linux軟體安裝方式: 1.以原始碼方式安裝 2.以軟體包方式安裝:【軟體包分2種】 1).rpm軟體包。-->在RedHat紅帽企業的RedHat,Fedora,CentOS等發行版
DNS伺服器【Linux-shell】
DNS伺服器 DNS伺服器是常用網路服務之一,當用戶利用計算機訪問網際網路之前,一個重要步驟是需要指定所要使用的DNS伺服器,它把使用者所請求的網際網路地址中的主機名解析成為IP地址。 # http://www.example.com/in
網路安全管理【Linux-shell】
網路安全管理: 作業系統安全主要基於:控制和隔離。 訪問控制涉及3方面:主體、客體、控制機制。 SELinux:是Linux中的一個核心安全模組,它提供了另外一種被稱為強制訪問控制(MAC)的安全機制,目的是為了消除因單一使用自
WWW伺服器【Linux-shell】
WWW伺服器: Linux發行版:RHEL6 WWW:即全球資訊網,也直接被稱為Web,實際上是指一張由各種網頁所構成的,網頁間互相通過連結連線在一起的“網”。即:www中網路的概念指的是由資訊內容所構成的網路。 網際網路:指
Samba伺服器【Linux-shell】
Samba伺服器: Samba伺服器是一種應用於區域網之內,為安裝有Windows、Linux等作業系統的主機之間提供檔案和印表機共享服務的自由軟體。Samba一詞來自於對術語SMB服務資訊塊的擴充套件,即Samba是SMB的另一種表述。SM
【Linux起步】Vim常用命令備註
退出 ZZ 儲存當前檔案並退出Vim :q! 放棄編輯 :e! 放棄所有修改並重新載入該檔案的原始內容 進入編輯 1、插入文字 i 進入insert模式 2、其他編輯命令 a 在游標後插入文字 o 當前行下另起一行 O 在當前行上另起一行 使用命令計數:追加3個感嘆號:3a
【Linux系列】【基礎版】第三章 Shell基礎知識
linux shell 3. Shell基礎知識 3.1 Shell的由來 3.1.1 Bourne Agin Shell 3.1.2 其他的shell, 有 zsh, ksh等 3.2 查看有沒有shell 3.2.1 yum list
【每天一個linux命令】grep
http pre 內容 技術分享 image 忽略 linux filename com 【簡介】 grep:一種強大的文本搜索工具,它能使用正則表達式搜索文本,並把匹配的行打印出來 【grep常用用法】 [root@www ~]# grep [-acinv] [--col
shell學習筆記1 【linux shell 編程從初學到精通第2版】
$1 註釋 文件名 man 輸出 當前 進制數 2.4 it is 已登錄用戶的個數: who | wc -l 查看系統有哪些用戶登錄 : who 新建一個文件/bin/ct11,在文件中輸入一條命令,chmod為該文件設置執行權限 # cat > /bin/ct
【linux 學習】shell指令碼自動化登入
每次登入都需要輸入密碼,,好麻煩滴感覺,於是想做個自動登入指令碼,豈不美哉^ . ^ 如何輸入密碼是個大問題,好在有個互動輸入的工具【expect】 首先需要安裝一下, 【Centos】 #檢視是否安裝過 yum list | grep expect #安裝
shell命令進階【Linux-shell基本操作】
shell 1.萬用字元: 萬用字元: *:表示任意長度的字串,如:ls ~/* #列舉家目錄下所有檔案或子目錄 ?:表示任意一個字元,如: ls
【linux C】C語言中常用的幾個函式的總結【一】
1、memset函式 定義變數時一定要進行初始化,尤其是陣列和結構體這種佔用記憶體大的資料結構。在使用陣列的時候經常因為沒有初始化而產生“燙燙燙燙燙燙”這樣的野值,俗稱“亂碼”。每種型別的變數都有各自的初始化方法,memset() 函式可以說是初始化記憶體的“萬能函式”,通常為新申請的記憶體進行初始化工作。
【linux C】C語言中常用的幾個函數的總結【一】
有效 getchar() 調用 指向 ++ 再次 無法 linux c 收回 1、memset函數 定義變量時一定要進行初始化,尤其是數組和結構體這種占用內存大的數據結構。在使用數組的時候經常因為沒有初始化而產生“燙燙燙燙燙燙”這樣的野值,俗稱“亂碼”。每種類型的變量都有各
【linux C】C語言中常用的幾個函式的總結【二】
3、fgets 雖然用 gets() 時有空格也可以直接輸入,但是 gets() 有一個非常大的缺陷,即它不檢查預留儲存區是否能夠容納實際輸入的資料,換句話說,如果輸入的字元數目大於陣列的長度,gets 無法檢測到這個問題,就會發生記憶體越界,所以程式設計時建議使用 fgets()。fgets() 的原型為
【Linux入門】十四、Shell程式設計8 -- 流程控制for迴圈
十四、Shell程式設計8 -- 流程控制for迴圈 for語法1 舉例1: 輸出結果: AM PM EVE 舉例2: 批量解壓縮指令碼 for語法2 舉個例子:
【Linux入門】十三、Shell基礎4 -- 多命令執行與管道符
十三、Shell基礎4 -- 多命令執行與管道符 1 多命令順序執行 執行符 格式 作用 例子 ; 命令1 ; 命令2 多個命令順序執行,命令之間沒有任何邏輯聯絡 ls ; date ; cd /hello ; date &am