linux過濾列
Ⅰ linux過濾關鍵字的下一行,這個命令怎麼寫
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個連續小寫字元的字元串的行。
$ 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 :不區分大小寫地搜索。默認情況區分大小寫,
Ⅱ 在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中awk或者用其他手段篩選空欄位的問題
這樣用
cattest.txt|awk'{if(NF==2)print$1,$2;elseprint$1,$3}'
Ⅳ linux 怎麼過濾日誌中大於某個數值的個數
^echo "running time (millis) = 112" | sed -rn 's/^running time \(millis\) = ([0-9]+)$/\1/p'
所以如果你想從文件里抽取:內
sed -rn 's/^running time \(millis\) = ([0-9]+)$/\1/p' 文件名
即可容
Ⅳ linux怎樣用grep過濾
^不知道你是想實現什麼目的,如果你是想只顯示配置文件中的以 # 號開頭的內行,那就使用
# grep ^# filename
如果容是想顯示除 # 號開頭的行的話呢,只需加個參數-v (-v 表示相反的過濾)就行了
# grep -v ^# filename
Ⅵ 如何通過linux命令根據某一列值唯一來過濾
你可以這樣做:
(1)為Server的那些使用者建立單獨的賬戶,例如:user01、user02....等等(可以給每個人建立一個單獨的賬戶。當然,為了使系統中的賬戶不至於太多而導致難以管理,也可以按照他們所在的部門、項目組(或工作組)、或是其它分類方式去建立賬戶)。
(2)對每個賬戶下的$HOME/.profile文件或者是$HOME/.cshrc文件(視不同用戶的SHELL來決定,例如:bsh和sh就是.profile,csh就是.cshrc),用
chown root:root ... (例如: chown root:root .cshrc)
命令將它們改成root用戶及屬組所有,只有root用戶才可以更改它們。
(3)在每個用戶的$HOME/.profile或是$HOME/.cshrc等shell環境配置文件中,將你認為是危險的命令做以下的轉換:
alias 命令名='echo 管理員不運行執行該命令'
例如: alias format='echo 管理員不運行執行該命令'
這樣這些用戶就無法執行你限定的命令,執行之後都顯示「管理員不運行執行該命令」。
如果覺得改.profile或是.cshrc文件不保險,還可以在每個用戶的$HOME下建立.login文件,也用上述的方法將它改成root用戶屬組的,在裡面加入
alias 命令名='echo 管理員不運行執行該命令'
效果更好。
----看到了你的問題追加。我覺得要是大家都只能使用root賬戶,那麼這個系統的規劃是否合理?假如一定都要使用root賬戶的話,對於每個用戶在鍵入命令的過程中,你很難去捕獲他們都正在敲入什麼命令。只有等他們在命令行上都輸入完了,回車確認之後才可能去發現他們執行的進程。假如真有這樣的一個監控程序在你的系統中,就算是監控到了,那麼那些進程已經開始運行了,對很多人來說已經是無法收拾了,只有及時的殺掉那些進程了。建議你把敏感的命令給rename了算了,例如mv format frmt
Ⅶ linux grep查詢結果再過濾
令|grep查詢過濾需要使用管道命令|。
舉例說明:
1、在進程表中查找特定進程的專命令通常如屬下:
Ⅷ 如何通過linux命令根據某一列值唯一來過濾數據
你可以這樣做:
(1)為Server的那些使用者建立單獨的賬戶,例如:user01、....等等(可以給每個人建立一個單獨的賬戶。當然,為了使系統中的賬戶不至於太多而導致難以管理,也可以按照他們所在的部門、項目組(或工作組)、或是其它分類方式去建立賬戶)。
(2)對每個賬戶下的$HOME/.profile文件或者是$HOME/.cshrc文件(視不同用戶的SHELL來決定,例如:bsh和sh就是.profile,csh就是.cshrc),用
chown root:root ... (例如: chown root:root .cshrc)
命令將它們改成root用戶及屬組所有,只有root用戶才可以更改它們。
(3)在每個用戶的$HOME/.profile或是$HOME/.cshrc等shell環境配置文件中,將你認為是危險的命令做以下的轉換:
alias 命令名='echo 管理員不運行執行該命令'
例如: alias format='echo 管理員不運行執行該命令'
這樣這些用戶就無法執行你限定的命令,執行之後都顯示「管理員不運行執行該命令」。
如果覺得改.profile或是.cshrc文件不保險,還可以在每個用戶的$HOME下建立.login文件,也用上述的方法將它改成root用戶屬組的,在裡面加入
alias 命令名='echo 管理員不運行執行該命令'
效果更好。
----看到了你的問題追加。我覺得要是大家都只能使用root賬戶,那麼這個系統的規劃是否合理?假如一定都要使用root賬戶的話,對於每個用戶在鍵入命令的過程中,你很難去捕獲他們都正在敲入什麼命令。只有等他們在命令行上都輸入完了,回車確認之後才可能去發現他們執行的進程。假如真有這樣的一個監控程序在你的系統中,就算是監控到了,那麼那些進程已經開始運行了,對很多人來說已經是無法收拾了,只有及時的殺掉那些進程了。建議你把敏感的命令給rename了算了,例如mv format frmt
----呵呵,你也夠執著的。既然一定要寫個程序,那我就說說大概的思路吧!具體的程序代碼你可以自己去寫,這樣也有些成就感。:)
不過我能保證,就算採用這樣的做法也不會取得什麼好的效果,尤其是大家都使用root賬戶。我用unix類操作系統近十年,聽我一句勸告不會有什麼害處啊!
程序思路:
(1)定義你的敏感命令列表(可以賦值給一個字元串數組)。
(2)獲取你本人在系統中當前的tty編號,以及你自己的IP地址(你是從哪個IP地址發起的telnet?如果你本人使用Console,也需要如此)。
(3)按照你的敏感命令列表,循環檢測除了自己的tty及IP地址之外的,其它tty及IP地址發起的敏感命令進程,如果發現,立即予以kill -9。並向相應的tty發送警告信息。
注意:這個循環是無限循環;這個程序是一個守護進程(Daemon)。除非接到進程中止信號,否則它將一直運行。這樣做的缺點是,循環檢測並殺掉那些敏感進程的過程並不能確保實時性,在發現相應的進程時,那些進程可能已經運行了一小段時間,盡管這段時間非常非常的短,但是也可能已經產生了效力甚至是危害。不過,這也是沒辦法的事情了。誰要你非要這樣呢?
Ⅸ Linux下篩選數據的問題
可以使用awk的條件篩選,版這樣寫權
awk '{if($1==13 && $2>87632565 && $2<89632565 && $3>87632565 && $3<89632565)print $0}' filename.txt >newfile.txt
Ⅹ 利用grep,sed或awk命令如何過濾出test.txt文件中第二列中大於10的數
awk '{if(NR==n) $n=新數據;print $0}'
面命令n行數列數
的交線……) 空間有幾種距離?如何求距離?點與點,點與線