管道相關命令
1 cut:根據條件從命令結果中提取對應內容
參數列表:
-
-b 按字節選取 忽略多字節字符邊界,除非也指定了 -n 標誌
-
-c 按字符選取
-
-d 自定義分隔符,默認爲製表符。
-
-f 與-d一起使用,指定顯示哪個區域
-
n:只有第n項
-
n-:從第n項一直到行尾
-
n-m:從第n項到第m項(包括m)
-
vim 1.txt
111:aaa:bbb:ccc
222:ddd:eee:fff
333:ggg:hhh
444:iii
- 截取出1.txt文件中前2行的第5個字
head -2 1.txt | cut -c 5
- 截取出1.txt文件中前2行以”:”進行分割的第1,2段內容
head -2 1.txt | cut -d ':' -f 1,2 # 或者head -2 1.txt | cut -d ':' -f 1-2
2. sort:排序
參數列表:
- -u 輸出行中去除重複行
- -n 按數字排序
- -r 使次序顛倒
- -t 指定分隔符
- -k 根據某一列排序
vim 2.txt
banana
apple
pear
orange
pear
- 給2.txt中元素排序
sort 2.txt
- 刪除2.txt中的重複行
sort -u 2.txt
vim 3.txt
1
3
5
7
11
2
4
6
10
8
9
- 給3.txt中數字按照升序排序
sort 3.txt sort -n 3.txt
- 給3.txt中數字按照降序排序
sort -nr 3.txt
3. wc:顯示指定文件字節數,單詞數以及行數
wc 文件名:指定文件,字節數,單詞數,行數信息
參數:
- -c或–bytes或–chars 只顯示Bytes數。
- -l或–lines 只顯示行數。
- -w或–words 只顯示字數。
- –help 在線幫助。
- –version 顯示版本信息。
- 統計1.txt中的信息
wc 1.txt
- 統計多個文件信息
wc 1.txt 2.txt 3.txt
- 查看目錄下有多少個文件
ls / | wc -w
4.Uniq:檢查及刪除文件文本中的重複出現行(常和sort連用)
參數:
- c:統計行數
- 統計2.txt中每行內容出現的次數
cat 2.txt | sort | uniq -c
- 去除2.txt中的重複行
cat 2.txt | sort | uniq
5. tee:重定向
參數:
- -a:追加
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-KanUZNuX-1578741850500)(C:\Users\acer\Desktop\新建文件夾\1578659878862.png)]
- 統計2.txt中每行內容出現的次數輸出到a.txt,並且把內容顯示在控制檯
sort 2.txt | uniq -c | tee a.txt
- 統計2.txt中每行內容出現的次數輸出追加到a.txt,並且把內容顯示在控制檯
sort 2.txt | uniq -c | tee -a a.txt
6. tr:替換或刪除文件中的字符
參數:
- -d, --delete:刪除指令字符
- 將“hello, p”換成"hello, j"
echo "hello, p" | tr "p" "j"
- 將“hello”換爲“HELLO”
echo "hello" | tr "[a-z]" "[A-Z]"
- 刪除abc1d4e5f中的數字
echo 'abc1d4e5f' | tr -d '[0-9]'
7. split:將大文件分爲若干個小文件
參數:
- -b<字節> : 指定每多少字節切成一個小文件
- -l<行數> : 指定每多少行切成一個小文件
split -l 2000 v.txt
split -b 1k v.txt
8. awk: 實現模糊查詢,按需提取字段,還可以進行判斷和簡單的運算
vim x.txt
aaa 111 333
bbb 444 555
ccc 666 777 888
ddd 999 222 999
- 打印輸出第一段
awk '{print $1}' x.txt
- 打印輸出1,2,4段,用#號連接
awk '{print $1 "#" $2 "#" $4}' x.txt
awk -F " " '{OFS="#"}{print $1,$2,$3}' x.txt
3. 以指定分隔符分割awk -F ':' '{print $1}' x.txt
- 匹配有’cc’的內容
awk '/cc/' x.txt
- 匹配第1段包含至少連續兩個c的內容
awk '$1 ~ /cc+/' x.txt
- 如果匹配到aaa就打印第1,3段,如果匹配到ccc,就打印第1,3,4段
awk '/aaa/ {print $1,$3} /ccc/ {print $1,$3,$4}' x.txt
- 如果第3段小於第4段就打印全部
awk '$3<$4 {print $0}' x.txt
- 顯示行號
awk '{print NR " " $0}' x.txt # 不能用單引號
- 顯示段數
awk '{print NF " " $0}' x.txt
- 打印前2行,並且第1段匹配 aa或者eee,打印全部,打印行號
awk 'NR<=2 && $1 ~/aa|eee/ {print NR " " $0}' x.txt
11. 打印前兩行,並顯示行號nl x.txt | head -2
nl x.txt | sed -ne '1,2p'
awk -F ":" 'NR<=2 {print NR " " $0}' x.txt
12. 將第一段內容替換爲"abc",指定分隔符爲|,顯示行數cat x.txt | head -3 | awk -F" " '{OFS="|"} $1="abc" {print NR " " $0}'
vim score.txt
張三 98 99 26
李四 100 99 09
王五 90 33 42
趙六 95 98 68
麻七 70 68 87
- 分段求和,對第二段求和
awk -F '\t' 'BEGIN{}{total=total+$2}END{print total}' score.txt
14. 打印九九乘法表awk 'BEGIN{ for(i=1;i<=9;i++){ for(j=1;j<=i;j++){ printf("%dx%d=%d%s", i, j, i*j, "\t" ) } printf("\n") } }'
9. sed :實現過濾和替換功能
參數:
- -n 僅顯示處理後的結果
- -e 以選項中指定的腳本來處理輸入的文本文件
- -f 以選項中指定的腳本文件來處理輸入的文本文件
動作說明:
- p :打印,亦即將某個選擇的數據印出。通常 p 會與參數 sed -n 一起運行
- d :刪除
- a :新增,內容出現在下一行
- i :插入, 內容出現在上一行
- c :取代, c 的後面可以接字串,這些字串可以取代 n1,n2 之間的行
- s :取代,可以直接進行取代的工作!通常這個 s 的動作可以搭配正規表示法!
- = :顯示行號
- 列出第2到第5行數據,並顯示行號
nl x.txt |sed -n -e '2,5p'
- 刪除前3行數據,並顯示行號
nl x.txt | sed -e '1,3d'
- 在第一行後添加’aaaa 111 1 22’
nl x.txt | sed '1a aaaa 111 1 22'
- 在第一行前面添加‘begin’
nl x.txt | sed -e 'li begin'
5. 查找包含’aa’的行sed -ne '/aa/p' x.txt