linux命令總結:
cut切分字段
cut -c list [file...]
cut -f [-d delim] list [file...]
-c list 以字符爲主,剪切,list爲字符編號或一段範圍的列表,以逗號隔開
-d delim 與-f選項一塊兒使用,指定定界符,默認定界符爲製表符
-f以字段爲主,剪切,list爲字段編號或一段範圍列表,以逗號隔開
輸入爲文件或標準輸入
cut -d : -f 1,5 /etc/passwdnode
sed文本替換
sed [-n] 'editing command' [file...]
sed [-n] -e 'editing command'... [file...]
sed [-n] -f script-file... [file...]
-e 'editing command'當有多個命令須要應用時,以-e鏈接
-f script-file從文件中讀取命令
-n不是顯示修改後的結果,而是顯示指定行
editing command是
sed 's/:.*//' /etc/passwd將:之後的替換成空,命令以s開頭,/表明分界符,能夠是任意的,而後是匹配正則,而後是替換文本linux
grep文本查找
grep [options] pattern [file...]
-E使用擴展正則表達式匹配
-F使用固定字符串匹配
-f file從文件裏讀取匹配表達式
-i忽略大小寫匹配
who | grep -F 'zhanghuan'正則表達式
grep -C 5 foo file 顯示file文件中匹配foo字串那行以及上下5行
grep -B 5 foo file 顯示foo及前5行
grep -A 5 foo file 顯示foo及後5行數組
join文本鏈接
join [options...] file1 file2
-1 filed
-2 filed
標明鏈接的鍵值,-1是從文件1中讀出的,-2是從文件2中讀出的
-o file.filed
指定每一個文件要輸出的字段,使用多個-o輸出多個字段
-t separator
指定文件分隔符,也做爲輸出字段的分隔符
-a FILENUM
除了顯示匹配好的行另外將指定序號(1或2)文件裏不匹配的行顯示出來
-e EMPTY
將需要顯示但是文件裏不存在的域用此選項指定的字符取代
-i
忽略大寫和小寫
join -o 1.1 -o 1.2 -o 1.3 -o 2.1 -o 2.2 -o 2.3 -e 'empty' -a 1 file1.txt file2.txt 函數
sort排序
sort [options...] [file]
-b忽略開頭的空白
-c檢查是否已排序,未排序則輸出非零值,不然輸出爲空
-d字典順序
-g浮點數比較
-f忽略大小寫
-k指定排序鍵,緊跟在k後面
-n整數比較
-o file指定輸出文件
-r反序輸出,默認是由小到大
-t使用單個字符爲分隔符,默認爲空白字符
-u去除具備相同鍵的行
sort -k2 -n -r deomo3.txt
sort -n -k 2.2,3.1 facebook.txt
以第二個域的第二個字符開始到第三個域的第一個字符結束的部分進行排序。日誌
read讀取一個或多個數據
read [-r] variable...
-r原始讀取,不作任何處理,不將結尾的反斜槓解釋爲續航字節
以IFS分割輸入數據
while IFS=: read name num sex
do
...
done排序
日誌輸出重定向索引
>/dev/null 輸出到空設備,表示丟掉輸出信息
2 > &1 將輸出到標準錯誤的信息輸出到標準輸出設備(一般是屏幕) 有3個默認的i/o
0 是標準輸入,通常是鍵盤
1 是標準輸出,通常是屏幕了
2 是標準錯誤,有時候屏幕上能夠看到,可是重定向的文件中看不到的就是它了
將標準輸出和標準錯誤信息記錄下來,咱們經過以下形式辦到:somescript.sh > log 2>&1 ip
find查找文件
find [file-or-directories] [options...]
-name 'pattern'
選定名稱與匹配模式匹配的
-type t
指定類型,t可使d或f,d爲目錄,f爲文件
-user u
選定用戶u的文件
find test -name 'demo*'字符串
df顯示文件系統使用狀況
df [options...] [file-or-directories]
-i顯示inode計數,而非空間
-k顯示空間時以KB爲單位
-l僅顯示本地文件系統
-h顯示空間,比較友好
du顯示一個或多個目錄的空間使用率
-k空間顯示,以KB爲單位
-s爲每一個參數僅顯示單行摘要
awk處理數據
awk pattern {action} 若是模式匹配則執行操做
awk pattern 若是模式匹配則打印記錄
awk {action} 針對每條記錄執行操做
awk 'BEGIN{ commands } pattern{ commands } END{ commands }'
第一步:執行BEGIN{ commands }語句塊中的語句;
第二步:從文件或標準輸入(stdin)讀取一行,而後執行pattern{ commands }語句塊,它逐行掃描文件,從第一行到最後一行重複這個過程,直到文件所有被讀取完畢。
第三步:當讀至輸入流末尾時,執行END{ commands }語句塊。
BEGIN語句塊在awk開始從輸入流中讀取行以前被執行,這是一個可選的語句塊,好比變量初始化、打印輸出表格的表頭等語句一般能夠寫在BEGIN語句塊中。
END語句塊在awk從輸入流中讀取完全部的行以後即被執行,好比打印全部行的分析結果這類信息彙總都是在END語句塊中完成,它也是一個可選語句塊。
pattern語句塊中的通用命令是最重要的部分,它也是可選的。若是沒有提供pattern語句塊,則默認執行{ print },即打印每個讀取到的行,awk讀取的每一行都會執行該語句塊。
-F fs fs指定輸入分隔符,fs能夠是字符串或正則表達式,如-F:
-v var=value 賦值一個用戶定義變量,將外部變量傳遞給awk
-f scripfile 從腳本文件中讀取awk命令
awk 'BEGIN{a=11;if(a >= 9){print "ok";}}'
awk 'NR%2==1{next}{print NR,$0;}' text.txt
echo | awk '{printf("hello word!n") > "datafile"}'
awk -F: '{ print $NF }' /etc/passwd 或 awk 'BEGIN{ FS=":" } { print $NF }' /etc/passwd
awk中的字符串函數 length(string)返回字符串的長度 substr(string,start,length)子字符串提取,字符編號從1開始 tolower/toupper(string)字符串大小轉換 index(string,find)查找string中是否有字符串find,返回string裏find字符串的起始位置,找不到則返回0 match(string,regex)將string與正則表達式regex匹配,若是匹配,則返回匹配string的索引,不匹配則返回0 sub(regex,replacement,target)字符串替換功能,gsub函數替換全部 split(string,array,regex)將字符串按regex切分,若是省略regex,則按FS切分,切分結果存到數組array裏