管線命令
ls -al|grep xxx , |後面就是管線命令
管線命令僅處理standard output,對於standard error output則會忽略
管線命令必須要能夠接受來自前一個指令的數據成爲standard input繼續處理才行
cut將一段信息的某一段給切出來,以行爲單位
cut -d '分割字符' -f 第幾段
cut -c 字符區間
-d: 後面接分割字符,與-f一起使用
-f: 依據-d的分割字符將一段字符串分割爲數段,後面接數字表示取第幾段
-c: 以字符的單位取出固定字幅區間
例:echo $PATH | cut -d ':' -f 5
echo $PATH | cut -d ':' -f 3,5 獲得第3、5行的字符串
echo $PATH | cut -c 12-20 獲得12-20位的字符串
echo $PATH | cut -c 12- 獲得第12位以後的字符串
grep分析每行的信息,若有需要的信息就提取出來
grep [-A] [-B] [-acinv] [--color=auto] '搜索字符串' filename
-A: 後面可以加數字,爲after的意思,除了列出該行外,後續的n行也列出來
-B: 後面可以加數字,爲before的意思,除了列出該行外,前面的n行也列出來
-a: 將二進制文件用text文件方式查找數據
-c: 計算找到'搜索字符串'的次數
-i: 忽略大小寫不同,視大小寫相同
-n: 輸出行號
-v: 反向選擇,即顯示沒有'搜索字符串內容的那行
--color=auto: 將找到關鍵詞的部分加上顏色
例:
last | grep 'root' 取出有root的那一行
last | grep -v 'root' 沒有root的就取出
last | grep 'root' | cut -d ' ' -f1 有root就取出,並且只取第一欄
grep --color=auto 'MANPATH' /etc/man.config 取出/etc/man.config內含有MANPATH的那幾行
sort排序,並且可依據數據類型進行排序
sort [-fbMnrtuk] [file or stdin]
-f: 忽略大小寫
-b: 忽略開頭部分的空格
-M: 用月份排序,英文的
-n: 使用數字排序,默認是文字
-r: 反向排序
-u: uniq,只取一行
-t: 分隔符,默認tab
-k: 使用區間來排序
例:
cat /etc/passwd | sort 個人賬號都記錄在/etc/passwd下,對賬號進行排序
cat /etc/passwd | sort -t ':' -k 3 -n 內容用:來分割,從第三欄排序
last | cut -d '' -f2 | sort 將輸出的數據僅取賬號,加以排序
uniq排序完成只顯示一列
uniq [-ic]
-i: 忽略大小寫
-c: 進行計數
例:
last | cut -d ' ' -f1 | sort | uniq 將賬號列出,僅取出賬號欄,進行排序後取出一位
last | cut -d ' ' -f1 | sort | uniq -c 將賬號列出,僅取出賬號欄,進行排序後取出一位,並顯示登錄次數
wc統計文件中有多少字,多少行,多少字符
wc [-lwm]
-l: 僅列出行
-w: 僅列出多少字
-m: 多少字符
例:
cat /etc/man.config | wc
輸出順序:行、字數、字符數
tee雙向重導向,將數據流(standard input)的處理過程的某段信息保存下來
tee [-a] file
-a: 以累加append的方式,將數據加入file中
例:
last | tee last.list | cut -d " " -f1 將last的輸出保存一份到last.list文件中
ls -l /home | tee ~/homefile | more 將ls的數據保存一份到~/homefile,同時屏幕也輸出信息
ls -l / | tee -a ~/homefile | more 累加ls的數據到homefile
tee可以讓standard output轉存一份到文件內並同樣將數據輸出到屏幕
tr用來刪除文檔中的文字,或者是進行替換
tr [-ds] SET1
-d: 刪除字符串中SET1這個字符串
-s: 取代掉重複的字符串
col,將tab取代爲空格
col [-xb]
-x: 將tab轉換成對應的空格
-b: 有反斜線/時,只保留反斜線後的那個字符
man col > /root/col.man
vi /root/col.man
col經常被用於將 man page 轉換爲純文本方便閱讀
join,有兩個文件,有相同數據的那行,將他們加在一起
join [-ti12] file1 file2
-t: 默認用空格分隔數據,並且比對第一段的數據,如果相同,就將兩個數據連成一行
-i: 忽略大小寫
-1: 第一個文件要用那個字段來分析
-2: 第二個文件要用那個字段來分析
paste直接將兩行黏在一起,中間用tab鍵隔開
paste [-d] file1 file2
-d: 後面可以接分割字符,默認tab
- :如果file部分寫成-,表示來自standard input的信息
expand,將tab轉成空格鍵
expand [-t] file
-t: 後面可以接數字,定義一個tab代表多少空格,默認8個
split將文件分隔
split [-bl] file PREFIX
-b: 後面可以接想要分隔的文件大小,可以加單位b,k,m
-l: 以行數來分隔
PREFIX: 分隔文件的前綴文字
xargs產生某個命令的參數
xargs [-0epn] command
-0: 如果輸入的stdin含有特殊字符,這個參數可以將它還原成一般字符
-e: 這個參數後接字符串,遇到這個字符串後停止
-p: 執行命令的參數時,會詢問使用者的意思
-n: 後面接次數,每次命令執行時要使用的參數個數