linux過濾器
① linux下Grep命令的詳細使用方法
linux grep命令
<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操作系統的文件系統有哪幾部分組成
一、Linux
shellShell是系統的用戶界面,提供了用戶與內核進行交互操作的一種介面。它接收用戶輸入的命令並把它送入內核去執行。實際上Shell是一個命令解釋器,它解釋由用戶輸入的命令並且把它們送到內核。不僅如此,Shell有自己的編程語言用於對命令的編輯,它允許用戶編寫由shell命令組成的程序。Shell編程語言具有普通編程語言的很多特點,比如它也有循環結構和分支控制結構等,用這種編程語言編寫的Shell程序與其他應用程序具有同樣的效果。Linux提供了像Microsoft
Windows那樣的可視的命令輸入界面--X
Window的圖形用戶界面(GUI)。它提供了很多窗口管理器,其操作就象Windows一樣,有窗口、圖標和菜單,所有的管理都是通過滑鼠控制。現在比較流行的窗口管理器是KDE和GNOME。每個Linux系統的用戶可以擁有他自己的用戶界面或Shell,用以滿足他們自己專門的Shell需要。同
Linux本身一樣,Shell也有多種不同的版本。目前主要有下列版本的Shell:
Bourne
Shell:是貝爾實驗室開發的。
BASH:是GNU的Bourne
Again
Shell,是GNU操作系統上默認的shell,大部分linux的發行套件使用的都是這種shell。Korn
Shell:是對Bourne
SHell的發展,在大部分內容上與Bourne
Shell兼容。
C
Shell:是SUN公司Shell的BSD版本。二、Linux
實用工具標準的Linux系統都有一套叫做實用工具的程序,它們是專門的程序,例如編輯器、執行標準的計算操作等。用戶也可以產生自己的工具。實用工具可分三類:
編輯器:用於編輯文件。
過濾器:用於接收數據並過濾數據。
交互程序:允許用戶發送信息或接收來自其他用戶的信息。
Linux的編輯器主要有:Ed、Ex、Vi和Emacs。Ed和Ex是行編輯器,Vi和Emacs是全屏幕編輯器。
Linux的過濾器(Filter)讀取從用戶文件或其他地方的輸入,檢查和處理數據,然後輸出結果。從這個意義上說,它們過濾了經過它們的數據。
Linux有不同類型的過濾器,一些過濾器用行編輯命令輸出一個被編輯的文件。另外一些過濾器是按模式尋找文件並以這種模式輸出部分數據。還有一些執行字處理操作,檢測一個文件中的格式,輸出一個格式化的文件。過濾器的輸入可以是一個文件,也可以是用戶從鍵盤鍵入的數據,還可以是另一個過濾器的輸出。過濾器可以相互連接,因此,一個過濾器的輸出可能是另一個過濾器的輸入。在有些情況下,用戶可以編寫自己的過濾器程序。
交互程序是用戶與機器的信息介面。Linux是一個多用戶系統,它必須和所有用戶保持聯系。信息可以由系統上的不同用戶發送或接收。信息的發送有兩種方式,一種方式是與其他用戶一對一地鏈接進行對話,另一種是一個用戶對多個用戶同時鏈接進行通訊,即所謂廣播式通訊。三、Linux
文件系統文件結構是文件存放在磁碟等存儲設備上的組織方法。一個文件系統的好壞主要體現在對文件和目錄的組織上。目錄提供了管理文件的一個方便而有效的途徑。我們能夠從一個目錄切換到另一個目錄,而且可以設置目錄和文件的許可權,設置文件的共享程度。使用Linux,用戶可以設置目錄和文件的許可權,以便允許或拒絕其他人對其進行訪問。Linux目錄採用多級樹形結構,用戶可以瀏覽整個系統,可以進入任何一個已授權進入的目錄,訪問那裡的文件。文件結構的相互關聯性使共享數據變得容易,幾個用戶可以訪問同一個文件。Linux是一個多用戶系統,操作系統本身的駐留程序存放在以根目錄開始的專用目錄中,有時被指定為系統目錄。內核,Shell和文件結構一起形成了基本的操作系統結構。它們使得用戶可以運行程序,管理文件以及使用系統。此外,Linux操作系統還有許多被稱為實用工具的程序,輔助用戶完成一些特定的任務。四、Linux內核內核、Shell、文件系統這三個部分構成了linux系統;Linux內核內核是系統的心臟,是運行程序和管理像磁碟和列印機等硬體設備的核心程序。它從用戶那裡接受命令並把命令送給內核去執行。在dos系統下:內核command.com在windows操作系統中:NT核心在linux操作系統中:kernel
您覺得這個答案好不好?
③ 森森魚缸控制面板左下角有個SELINUX的圖標是幹啥用的
selinux是屬於linux系統安全策略:如果是三合一悔拆內置過濾器,也就是泵頭和泵頭下面接套頭的那種,在套頭里填入濾材,然後用吸盤吸附在缸壁上,把氣管漏出水面,插碧盯棗電就可以使用則跡。 如果是外置過濾桶,那麼首先將桶內的濾材擺放好,一般從上往下三層過濾,分別是第一層陶瓷環。
④ Linux下常用文本處理命令
Linux下常用文本處理命令大全
Linux下面有很多經典的非常有用的命令,其中處理文本的命令就有很多。下面就讓我們一起看看這些經典的Linux文本處理命令有哪些吧。
一. sort
文件排序, 通常用在管道中當過濾器來使用. 這個命令可以依據指定的關鍵字或指定的字元位置, 對文件行進行排序. 使用-m選項, 它將會合並預排序的輸入文件. 想了解這個命令的全部參數請參考這個命令的info頁.
二. tsort
拓撲排序, 讀取以空格分隔的有序對, 並且依靠輸入模式進行排序.
三. uniq
這個過濾器將會刪除一個已排序文件中的重復行. 這個命令經常出現在sort命令的管道後邊.
四. expand, unexpand
expand命令將會把每個tab轉化為一個空格. 這個命令經常用在管道中.
unexpand命令將會把每個空格轉化為一個tab. 效果與expand命令相反.
五. cut
一個從文件中提取特定域的工具. 這個命令與awk中使用的print $N命令很相似, 但是更受限. 在腳本中使用cut命令會比使用awk命令來得容易一些. 最重要的選項就是-d(欄位定界符)和-f(域分隔符)選項.
六. paste
將多個文件, 以每個文件一列的形式合並到一個文件中, 合並後文件中的每一列就是原來的一個文件. 與cut結合使用, 經常用於創建系統log文件.
七. join
這個命令與paste命令屬於同類命令. 但是它能夠完成某些特殊的目地. 這個強力工具能夠以一種特殊的形式來合並兩個文件, 這種特殊的形式本質上就是一個關聯資料庫的簡單版本.
join命令只能夠操作兩個文件. 它可以將那些具有特定標記域(通常是一個數字標簽)的行合並起來, 並且將結果輸出到stdout. 被加入的文件應該事先根據標記域進行排序以便於能夠正確的匹配.
八. head
把文件的頭部內容列印到stdout上(默認為10行, 可以自己修改). 這個命令有一些比較有趣的選項.
九. tail
將一個文件結尾部分的內容輸出到stdout中(默認為10行). 通常用來跟蹤一個系統logfile的.修改情況, 如果使用-f選項的話, 這個命令將會繼續顯示添加到文件中的行.
十. wc
wc可以統計文件或I/O流中的”單詞數量”:
十一. fold
將輸入按照指定寬度進行折行. 這里有一個非常有用的選項-s, 這個選項可以使用空格進行斷行(譯者: 事實上只有外文才需要使用空格斷行, 中文是不需要的)(請參考例子 12-23和例子 A-1).
十二. fmt
一個簡單的文件格式器, 通常用在管道中, 將一個比較長的文本行輸出進行”折行”.
十三. col
這個命令用來濾除標准輸入的反向換行符號. 這個工具還可以將空白用等價的tab來替換. col工具最主要的應用還是從特定的文本處理工具中過濾輸出, 比如groff和tbl. (譯者: 主要用來將man頁轉化為文本.)
十四. column
列格式化工具. 通過在合適的位置插入tab, 這個過濾工具會將列類型的文本轉化為”易於列印”的表格式進行輸出.
十五. colrm
列刪除過濾器. 這個工具將會從文件中刪除指定的列(列中的字元串)並且寫到文件中, 如果指定的列不存在, 那麼就回到stdout. colrm 2 4 <filename將會刪除filename文件中每行的第2到第4列之間的所有字元. p=""> </filename將會刪除filename文件中每行的第2到第4列之間的所有字元.>
Caution: 如果這個文件包含tab和不可列印字元, 那將會引起不可預期的行為. 在這種情況下, 應該通過管道的手段使用expand和unexpand來預處理colrm.
十六. nl
計算行號過濾器. nl filename將會把filename文件的所有內容都輸出到stdout上, 但是會在每個非空行的前面加上連續的行號. 如果沒有filename參數, 那麼就操作stdin.
nl命令的輸出與cat -n非常相似, 然而, 默認情況下nl不會列出空行.
十七. pr
格式化列印過濾器. 這個命令會將文件(或stdout)分頁, 將它們分成合適的小塊以便於硬拷貝列印或者在屏幕上瀏覽. 使用這個命令的不同的參數可以完成好多任務, 比如對行和列的操作, 加入行, 設置頁邊, 計算行號, 添加頁眉, 合並文件等等. pr命令集合了許多命令的功能, 比如nl, paste, fold, column, 和expand.
pr -o 5 –width=65 fileZZZ | more 這個命令對fileZZZ進行了比較好的分頁, 並且列印到屏幕上. 文件的縮進被設置為5, 總寬度設置為65.
一個非常有用的選項-d, 強制隔行列印(與sed -G效果相同).
十八. gettext
GNU gettext包是專門用來將程序的輸出翻譯或者本地化為不同國家語言的工具集. 在最開始的時候僅僅支持C語言, 現在已經支持了相當數量的其它程序語言和腳本語言.
想要查看gettext程序如何在shell腳本中使用. 請參考info頁.
十九. msgfmt
一個產生二進制消息目錄的程序. 這個命令主要用來本地化.
二十. iconv
一個可以將文件轉化為不同編碼格式(字元集)的工具. 這個命令主要用來本地化.
二十一. recode
可以認為這個命令是上邊iconv命令的專業版本. 這個非常靈活的並可以把整個文件都轉換為不同編碼格式的工具並不是Linux標准安裝的一部分.
二十二. TeX, gs
TeX和Postscript都是文本標記語言, 用來對列印和格式化的視頻顯示進行預拷貝.
TeX是Donald Knuth精心製作的排版系統. 通常情況下, 通過編寫腳本的手段來把所有的選項和參數封裝起來一起傳到標記語言中是一件很方便的事情.
⑤ Linux xargs grep zgrep命令
xargs 是給命令返臘傳遞參數的一個過濾器,也是組合多個命令的一個工具,它能夠捕獲一個命令的輸出,然後傳遞給另外一個命令。之所以會用到這個命令,關鍵是由於 很多命令不支持笑世纖管道來傳遞參數 ,而日常工作中就有這個需要,所以就有了 xargs 命令。
我們經常會用grep命令在文件中查找需要的內容,比如現在一個文件夾裡面有9個文件,有三種格式txt, csv和gz壓縮文件。
123裡面存的內容都一樣為
456裡面存的內容也一樣為
789裡面存的都是
如果我現在要從所有的文件裡面找「apple」
我會得到下面的結果,你會發現 grep不能從gz文件中查找內容
zgrep 這個命令可以解決這個問題,這樣就不需要先解壓然後再去查找了
會得到如下結果,顯示了所有文件格式中找到的「apple」,並且顯示了匹配的行號
如果只想在符合某種特徵的文件中找你感興趣的內容呢?比如在文件名中包含123的文件中查找「apple」。這時候就需要管道了,你需要先找到這樣的文件然後再從中找「apple」
第一步找到名字中包含123的文件
會得到文件名中包含123的所有文件
第二步查找「apple」
然後我們再來從中找「apple」,你會發現下面這條命令不work,你啥都得不到
這就是我們開篇提到的, 很多命令不支持管道來傳遞參數。 這個時候 xargs 就派上用場了
同時用上 zgrep ,這碰仿樣gz文件也一起找了
那麼,如果我們想從某一種特定格式的文件中(比如csv文件)找特定的內容該怎麼做呢?大家應該能觸類旁通,舉一反三了吧!
Linux xargs grep zgrep命令
⑥ Linux裡面ps -aux |grep sshd命令作用是什麼
l題主你好,
ps-aux簡單來說就是回顯所有進程的信息;
grepsshd表示使用grep查找包含sshd的行;
將這兩個命令用管道符連起來表示:
在ps-aux回顯的所有進程信息中查找包含sshd的行並顯示在終端里.
-------------------------
linux系統中, 正常情況下, 每個程序啟動後, 在進程列表中都能看到相對應的信息, 而對系統中進程信息的查看就是通過ps命令: 下面是我系統中ps -aux顯示的進程信息的一部分:
寫在最後, 說簡單些, grep命令就相同於一個過濾器, 從眾多行中將符合條件的行給挑出來.
希望可以幫到題主,歡迎追問