linux查詢技巧: find grep xargs
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個連續小寫字元的字串的行。
$ grep ‘w\(es\)t.*\1′ aa
如果west被匹配,則es就被儲存到記憶體中,並標記為1,然後搜尋任意個字元(.*),這些字元後面緊跟著 另外一個es(\1),找到就顯示該行。如果用egrep或grep -E,就不用”\”號進行轉義,直接寫成’w(es)t.*\1′就可以了。
5.grep命令使用複雜例項
假設您正在’/usr/src/Linux/Doc’目錄下搜尋帶字元 串’magic’的檔案:
$ grep magic /usr/src/Linux/Doc/*
sysrq.txt:* How do I enable the magic SysRQ key?
sysrq.txt:* How do I use the magic SysRQ key?
其中檔案’sysrp.txt’包含該字串,討論的是 SysRQ 的功能。
預設情況下,’grep’只搜尋當前目錄。如果 此目錄下有許多子目錄,’grep’會以如下形式列出:
grep: sound: Is a directory
這可能會使’grep’ 的輸出難於閱讀。這裡有兩種解決的辦法:
明確要求搜尋子目錄:grep -r
或忽略子目錄:grep -d skip
如果有很多 輸出時,您可以通過管道將其轉到’less’上閱讀:
$ grep magic /usr/src/Linux/Documentation/* | less
這樣,您就可以更方便地閱讀。
有一點要注意,您必需提供一個檔案過濾方式(搜尋全部檔案的話用 *)。如果您忘了,’grep’會一直等著,直到該程式被中斷。如果您遇到了這樣的情況,按 <CTRL c> ,然後再試。
下面還有一些有意思的命令列引數:
grep -i pattern files :不區分大小寫地搜尋。預設情況區分大小寫,
grep -l pattern files :只列出匹配的檔名,
grep -L pattern files :列出不匹配的檔名,
grep -w pattern files :只匹配整個單詞,而不是字串的一部分(如匹配’magic’,而不是’magical’),
grep -C number pattern files :匹配的上下文分別顯示[number]行,
grep pattern1 | pattern2 files :顯示匹配 pattern1 或 pattern2 的行,
grep pattern1 files | grep pattern2 :顯示既匹配 pattern1 又匹配 pattern2 的行。
grep -n pattern files 即可顯示行號資訊
grep -c pattern files 即可查詢總行數
這裡還有些用於搜尋的特殊符號:
\< 和 \> 分別標註單詞的開始與結尾。
例如:
grep man * 會匹配 ‘Batman’、’manic’、’man’等,
grep ‘\<man’ * 匹配’manic’和’man’,但不是’Batman’,
grep ‘\<man\>’ 只匹配’man’,而不是’Batman’或’manic’等其他的字串。
‘^’:指匹配的字串在行首,
‘$’:指匹配的字串在行 尾,
Grep 命令 用法大全
1、 引數:-I :忽略大小寫
-c :列印匹配的行數
-l :從多個檔案中查詢包含匹配項
-v :查詢不包含匹配項的行
-n:列印包含匹配項的行和行標
2、RE(正則表示式)
\ 忽略正則表示式中特殊字元的原有含義
^ 匹配正則表示式的開始行
$ 匹配正則表示式的結束行
\< 從匹配正則表示式的行開始
\> 到匹配正則表示式的行結束
[ ] 單個字元;如[A] 即A符合要求
[ - ] 範圍 ;如[A-Z]即A,B,C一直到Z都符合要求
. 所有的單個字元
* 所有字元,長度可以為0
3、舉例
# ps -ef | grep in.telnetd
root 19955 181 0 13:43:53 ? 0:00 in.telnetd
# more size.txt size檔案的內容
b124230
b034325
a081016
m7187998
m7282064
a022021
a061048
m9324822
b103303
a013386
b044525
m8987131
B081016
M45678
B103303
BADc2345
# more size.txt | grep '[a-b]' 範圍 ;如[A-Z]即A,B,C一直到Z都符合要求
b124230
b034325
a081016
a022021
a061048
b103303
a013386
b044525
# more size.txt | grep '[a-b]'*
b124230
b034325
a081016
m7187998
m7282064
a022021
a061048
m9324822
b103303
a013386
b044525
m8987131
B081016
M45678
B103303
BADc2345
# more size.txt | grep 'b' 單個字元;如[A] 即A符合要求
b124230
b034325
b103303
b044525
# more size.txt | grep '[bB]'
b124230
b034325
b103303
b044525
B081016
B103303
BADc2345
# grep 'root' /etc/group
root::0:root
bin::2:root,bin,daemon
sys::3:root,bin,sys,adm
adm::4:root,adm,daemon
uucp::5:root,uucp
mail::6:root
tty::7:root,tty,adm
lp::8:root,lp,adm
nuucp::9:root,nuucp
daemon::12:root,daemon
# grep '^root' /etc/group 匹配正則表示式的開始行
root::0:root
# grep 'uucp' /etc/group
uucp::5:root,uucp
nuucp::9:root,nuucp
# grep '\<uucp' /etc/group
uucp::5:root,uucp
# grep 'root$' /etc/group 匹配正則表示式的結束行
root::0:root
mail::6:root
# more size.txt | grep -i 'b1..*3' -i :忽略大小寫
b124230
b103303
B103303
# more size.txt | grep -iv 'b1..*3' -v :查詢不包含匹配項的行
b034325
a081016
m7187998
m7282064
a022021
a061048
m9324822
a013386
b044525
m8987131
B081016
M45678
BADc2345
# more size.txt | grep -in 'b1..*3'
1:b124230
9:b103303
15:B103303
# grep '$' /etc/init.d/nfs.server | wc -l
128
# grep '\$' /etc/init.d/nfs.server | wc –l 忽略正則表示式中特殊字元的原有含義
15
# grep '\$' /etc/init.d/nfs.server
case "$1" in
>/tmp/sharetab.$$
[ "x$fstype" != xnfs ] &&
echo "$path\t$res\t$fstype\t$opts\t$desc"
>>/tmp/sharetab.$$
/usr/bin/touch -r /etc/dfs/sharetab /tmp/sharetab.$$
/usr/bin/mv -f /tmp/sharetab.$$ /etc/dfs/sharetab
if [ -f /etc/dfs/dfstab ] && /usr/bin/egrep -v '^[ ]*(#|$)'
if [ $startnfsd -eq 0 -a -f /etc/rmmount.conf ] &&
if [ $startnfsd -ne 0 ]; then
elif [ ! -n "$_INIT_RUN_LEVEL" ]; then
while [ $wtime -gt 0 ]; do
wtime=`expr $wtime - 1`
if [ $wtime -eq 0 ]; then
echo "Usage: $0 { start | stop }"
# more size.txt
the test file
their are files
The end
# grep 'the' size.txt
the test file
their are files
# grep '\<the' size.txt
the test file
their are files
# grep 'the\>' size.txt
the test file
# grep '\<the\>' size.txt
the test file
# grep '\<[Tt]he\>' size.txt
the test file
==================================================================
1,簡介
使用正則表示式的一個多用途文字搜尋工具.這個php?name=%C3%FC%C1%EE" onclick="tagshow(event)" class="t_tag">命令本來是ed行編輯器中的一個php?name=%C3%FC%C1%EE" onclick="tagshow(event)" class="t_tag">命令/過濾器:
g/re/p -- global - regular expression - print.
基本格式
grep pattern [file...]
(1)grep 搜尋字串 [filename]
(2)grep 正則表示式 [filename]
在檔案中搜索所有 pattern 出現的位置, pattern 既可以是要搜尋的字串,也可以是一個正則表示式.
注意:在輸入要搜尋的字串時最好使用雙引號/而在模式匹配使用正則表示式時,注意使用單引號
2,grep的選項
-c 只輸出匹配行的計數
-i 不區分大小寫(用於單字元)
-n 顯示匹配的行號
-v 不顯示不包含匹配文字的所以有行
-s 不顯示錯誤資訊
-E 使用擴充套件正則表示式
更多的選項請檢視:man grep
3,常用grep例項
(1)多個檔案查詢
grep "sort" *.doc #見檔名的匹配
(2)行匹配:輸出匹配行的計數
grep -c "48" data.doc #輸出文件中含有48字元的行數
(3)顯示匹配行和行數
grep -n "48" data.doc #顯示所有匹配48的行和行號
(4)顯示非匹配的行
grep -vn "48" data.doc #輸出所有不包含48的行
(4)顯示非匹配的行
grep -vn "48" data.doc #輸出所有不包含48的行
(5)大小寫敏感
grep -i "ab" data.doc #輸出所有含有ab或Ab的字串的行
4, 正則表示式的應用
(1)正則表示式的應用 (注意:最好把正則表示式用單引號括起來)
grep '[239].' data.doc #輸出所有含有以2,3或9開頭的,並且是兩個數字的行
(2)不匹配測試
grep '^[^48]' data.doc #不匹配行首是48的行
(3)使用擴充套件模式匹配
grep -E '219|216' data.doc
(4) ...
這需要在實踐中不斷應用和總結,熟練掌握正則表示式。
5, 使用類名
可以使用國際模式匹配的類名:
[[:upper:]] [A-Z]
[[:lower:]] [a-z]
[[:digit:]] [0-9]
[[:alnum:]] [0-9a-zA-Z]
[[:space:]] 空格或tab
[[:alpha:]] [a-zA-Z]
(1)使用
grep '5[[:upper:]][[:upper:]]' data.doc #查詢以5開頭以兩個大寫字母結尾的行
相關推薦
linux查詢技巧: find grep xargs
<div fc05="" fc11="" nbw-blog="" ztag="" js-fs2"=""> 1.作用 Linux系統中grep命令是一種強大的文字搜尋工具,它能使用正則表示式搜尋文字,並把匹 配的行打印出來。grep全稱是Global Regular Expression Prin
Linux的五個查詢命令:find,locate,whereis,which,type 及其區別【轉】
1. find find是最常見和最強大的查詢命令,你可以用它找到任何你想找的檔案。 find的使用格式如下: $ find <指定目錄> <指定條件> <指定動作> - <指定目錄>: 所要搜尋的目錄及其所
PyCharm使用技巧:Find in Path(全域性查詢)、Find(當前檔案查詢)
PyCharm的Find in Path功能提供了全域性查詢功能,快捷鍵為Ctrl + Shift + F。Find則是在當前檔案查詢,快捷鍵為Ctrl + F。這兩個個功能非常實用。 Find in Path的使用: 按快捷鍵Ctrl + Shift +
Linux下各種查詢命令(find, grep, which, whereis, locate)
find命令 find < path > < expression > < cmd > path: 所要搜尋的目錄及其所有子目錄。預設為當前目錄。expression: 所要搜尋的檔案的特徵。cmd: 對搜尋結果進行特定的處理。 如果什麼引數也不加,find預設搜尋當
Linux的五個查詢命令:find,locate,whereis,which,type
在Linux中,有很多方法可以做到這一點。國外網站LinuxHaxor總結了五條命令,你可以看看自己知道幾條。大多數程式設計師,可能經常使用其中的2到3條,對這5條命令都很熟悉的人應該是不多的。 1. find find是最常見和最強大的查詢命令,你可以用它找到任何你想找
Linux的五個檔案查詢命令:find,locate,whereis,which,type
find:查詢檔案或目錄所在路徑 locate:根據檔案資料庫updatedb查詢檔案或目錄 locate不搜尋具體目錄,而是搜尋一個數據庫(/var/lib/locatedb),這個資料庫中含有本地所有檔案資訊(預設沒有掃描外接的行動硬碟或者掛載在/media下的其他
PyCharm使用技巧:Find Usages(查詢引用)
PyCharm的Find Usages功能可以查詢某個物件(變數、函式、或者類等)被引用的地方。 使用: 在要查詢的物件上右鍵-》Find Usages-》介面下方會列出查詢結果。 快捷鍵:Alt + F7 下面以test.py和test2.py為例,其中test2.p
Linux Screen技巧:記錄屏幕日
screen下面介紹如何記錄screen屏幕日誌。第一種方法:啟動時添加選項-L(Turn on output logging.),會在當前目錄下生成screenlog.0文件。screen -L -dmS test的意思是啟動一個開始就處於斷開模式的會話,會話的名稱是test。screen -r test連
前方深坑注意:find結合xargs
xargs 和 find 算是一對死黨。兩者結合使用可以讓任務變得更輕鬆。不過人們通常卻是以一種錯誤的組合方式使用它們。例如: find . -name "*.txt" -print | xargs rm -f
linux-基礎學習:find的用法
查詢檔案 find ./ -type f 查詢目錄 find ./ -type d 查詢名字為test的檔案或目錄 (*) find ./ -name test 查詢名字符合正則表示式的檔案,注意前面的‘.*’(查詢到的檔案帶有目錄) find ./ -rege
Linux----linux命令使用(find,grep,管道|,man,runleve,tar,gzip)
1、 find 在指定一個路徑,按條件搜尋某一個檔案如: find /home/stu -name main.c 在/home/stu目錄中搜索名為main.c的檔案2、 grep 起資訊過濾作用,過濾在一個檔案中匹配某個字
linux實用技巧:ubuntu16.04 64位系統安裝32位系統相容包並修改dash(預設)為bash
需求 ubuntu16.04 64位系統安裝32位系統相容包並修改dash(預設)為bash命令列操作 在linux系統安裝32位相容包: sudo apt-g
Linux 查詢檔案工具find
find命令是從指定位置進行遍歷查詢(可以理解為對檔案和目錄進行逐一查詢) find可以查詢具有某一類特徵的檔案(例如查詢具有某個許可權特徵的檔案等),非常適合於批量處理具有某一類特徵的檔案 #######################################
Linux:02---Terminal高階命令(查詢):find、grep、file、which、whereis
一、find 1.功能:查詢符合條件的檔案、目錄 2.格式:find [目錄名] 選項 查詢條件 如果沒有指定目錄,預設從當前路徑查詢 3.舉例 find /work/ &nb
三天不念口生,三天不寫手生,Linux基本命令Find,grep妙用檔案檔案內容檢索(查詢)好幫手
Find,grep 可以輕鬆實現對指定檔案和目錄的查詢,檢視,刪除,***內容的清理等等……雖然不及sed\awk\功能強大和複雜,但其方便易用結合其它命令還是可以為我們提供強大的實用功能 1、 查詢檔案建立如下結構檔案和資料夾,使用find查詢my5.txt find ./ -name my5.t
linux每日命令(23):find命令之xargs
在使用 find命令的-exec選項處理匹配到的檔案時, find命令將所有匹配到的檔案一起傳遞給exec執行。但有些系統對能夠傳遞給exec的命令長度有限制,這樣在find命令執行幾分鐘之後,就會出現溢位錯誤。錯誤資訊通常是“引數列太長”或“引數列溢位”。這就是xargs命令的用處所在,特別是與find命令
【Linux】- 對find,xargs,grep和管道的一些理解
問題 相信大家都知道在目錄中搜索含有固定字串檔案的命令: find . -name '*.py' |xargs grep test 剛開始的時候,我不熟悉xargs命令,所以直接使用的命令是: find . -name '*.py' |grep test 結果並不是自己所期望的。
Linux基礎知識:SHELL指令碼;find查詢、tar壓縮;sed檔案處理工具
Shell指令碼程式設計基礎程式程式:演算法+資料結構資料:是程式的核心資料結構:資料在計算機中的型別和組織方式演算法:處理資料的方式程式程式設計風格:過程式:以指令為中心,資料服務於指令物件式:以資料為中心,指令服務於資料shell程式:提供了程式設計能力,解釋執行高階程式語言:編譯:高階語言
Linux:find grep sed查詢命令
find: 命令主要為對檔案的查詢以及部分操作,下面介紹一下常用引數的使用 find [路徑地址] -name '[檔名(支援檔案萬用字元和正則表示式)]' 當前目錄下查詢以test開
【日常小記】linux中強大且常用命令:find、grep
在linux下面工作,有些命令能夠大大提高效率。本文就向大家介紹find、grep命令,他哥倆可以算是必會的linux命令,我