⑴ 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下按時間過濾文件如何設置
find dir -mtime +10 -a -mtime -20
找出最後寫入時間為10天-20天前的文件
你這樣算算就好了
-mtime是天
-mmin是分鍾
⑶ linux中怎麼把grep過濾出的目錄傳給cd命令切換目錄
cd命令
使用許可權 : 所有使用者
使用方式 : cd [dirName]
說明 : 變換工作目錄至 dirName。 其中 dirName 表示法可為絕版對路徑或相對權路徑。若目錄名稱省略,則變換至使用者的 home directory (也就是剛 login 時所在的目錄)。
另外,"~" 也表示為 home directory 的意思,"." 則是表示目前所在的目錄,".." 則表示目前目錄位置的上一層目錄。
範例 : 跳到 /usr/bin/ :
cd /usr/bin
跳到自己的 home directory :
cd ~
跳到目前目錄的上上兩層 :
cd ../..
返回進入當前目錄前所在目錄
cd -
⑷ 從linux指令的結果中過濾出需要的部分並寫入指定文件
Linux下可以用sed命令來向文件中自追加內容。
案例:把/etc/test1文件中1-10行內容寫入到test2中
12
sed
-n
'1,10'p
/etc/test1
>>test2#將file1的1-10行追加到file2
sed命令行格式為:sed
[-nefri]
『command』
輸入文本
常用選項:-n∶使用安靜(silent)模式;
-e∶直接在指令列模式上進行
sed
的動作編輯;
-f∶直接將
sed
的動作寫在一個檔案內;
-r∶sed
的動作支援的是延伸型正規表示法的語法;
-i∶直接修改讀取的檔案內容,而不是由螢幕輸出。
⑸ 如何通過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過濾中,不包含某些字元
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中如何實現
過濾操作就是指在一大堆文本信息中篩選出你關心的數據。
一般用 ls + 通配符,專或屬 grep, sed 或 awk 這些支持正則表達式的工具都可以實現過濾操作。
比如:
ls *.jpg #過濾出當前目錄下以jpg為後綴的所有文件,這是通配符用法
grep "abc" file.txt #過濾出file.txt中包含abc的行,這里沒有使用正則表達式
ls | grep "[a-z][0-9].csv" #從ls的結果中過濾出文件名格式為一個字母加一位數字並以.csv為後綴的文件名,這里用了正則表達式(字母集合[a-z]與數字集合[0-9])
⑻ linux 操作系統中shell過濾
這不簡單,循環嵌套case多分枝選擇結構,一樓的回答我就不說什麼了,根本就沒有/bash/這個路徑,sh自然也不會存在在這個路徑上。這個腳本就是可能的數值太多,case分支寫得累……。算了,我給你寫個吧。
說明:此腳本接收腳本後跟的第一個參數為讀取定義數值的文本,比如說你在工作路徑上有個叫test的文件,該文件定義了需要包含的數字,腳本本身的文件名是num那麼執行該腳本的命令是./num ./test
每個數字對應的命令自己改吧,我這里全是列印文件里包含了對應的數值到標准輸出上。以下腳本在ubuntu server 8.04測試通過。
#! /bin/bash
for var in `sed 's/,/ /g' $1` #注意,包圍sed語句的是反引號,即字母鍵盤上方數字1左邊的那個鍵
do
case $var in
0)
echo "0 is in the string\.";;
1)
echo "1 is in the string\.";;
2)
echo "2 is in the string\.";;
3)
echo "3 is in the string\.";;
4)
echo "4 is in the string\.";;
5)
echo "5 is in the string\.";;
6)
echo "6 is in the string\.";;
7)
echo "7 is in the string\.";;
8)
echo "8 is in the string\.";;
9)
echo "9 is in the string\.";;
10)
echo "10 is in the string\.";;
11)
echo "11 is in the string\.";;
12)
echo "12 is in the string\.";;
13)
echo "13 is in the string\.";;
14)
echo "14 is in the string\.";;
15)
echo "15 is in the string\.";;
16)
echo "16 is in the string\.";;
17)
echo "17 is in the string\.";;
18)
echo "18 is in the string\.";;
19)
echo "19 is in the string\.";;
20)
echo "20 is in the string\.";;
21)
echo "21 is in the string\.";;
22)
echo "22 is in the string\.";;
23)
echo "23 is in the string\.";;
24)
echo "24 is in the string\.";;
25)
echo "25 is in the string\.";;
26)
echo "26 is in the string\.";;
27)
echo "27 is in the string\.";;
28)
echo "28 is in the string\.";;
*)
echo "One or more variable\(s\) in $1 is out of range!";;
esac
done
⑼ Linux中,如何將grep 搜索到的結果導入到一個文件,但要剔除沒找到的項,只留找到的項。
grep 本來就是過濾命令。
你將其他命令得到的結果,比如ls -l命令得到的列表,通過管道符 | 導出到grep,後面接上要查找的關鍵字,再把結果通過重定向導出到文件。
就像:lsmod | grep wifi >> ~/result.txt
⑽ linux怎樣用grep過濾
不知道你是想實現什麼目的,如果你是想只顯示配置文件中的以 # 號開頭的行版,那就使用
# grep ^# filename
如果是想顯示除權 # 號開頭的行的話呢,只需加個參數-v (-v 表示相反的過濾)就行了
# grep -v ^# filename