1. 程式人生 > >linux查詢技巧: find grep xargs

linux查詢技巧: find grep xargs

<div fc05="" fc11="" nbw-blog="" ztag="" js-fs2"="">

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可以查詢具有某一類特徵的檔案(例如查詢具有某個許可權特徵的檔案等),非常適合於批量處理具有某一類特徵的檔案 #######################################

Linux02---Terminal高階命令(查詢)findgrep、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】- 對findxargsgrep和管道的一些理解

問題 相信大家都知道在目錄中搜索含有固定字串檔案的命令: 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中強大且常用命令findgrep

在linux下面工作,有些命令能夠大大提高效率。本文就向大家介紹find、grep命令,他哥倆可以算是必會的linux命令,我