管道相關命令

管道相關命令

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. 截取出1.txt文件中前2行的第5個字
head -2 1.txt | cut -c 5

  1. 截取出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
  1. 給2.txt中元素排序
sort 2.txt

  1. 刪除2.txt中的重複行
sort -u 2.txt

vim 3.txt 
1
3
5
7
11
2
4
6
10
8
9
  1. 給3.txt中數字按照升序排序
sort 3.txt
sort -n 3.txt

  1. 給3.txt中數字按照降序排序
sort -nr 3.txt

3. wc:顯示指定文件字節數,單詞數以及行數

wc 文件名:指定文件,字節數,單詞數,行數信息

參數:

  • -c或–bytes或–chars 只顯示Bytes數。
  • -l或–lines 只顯示行數。
  • -w或–words 只顯示字數。
  • –help 在線幫助。
  • –version 顯示版本信息。
  1. 統計1.txt中的信息
wc 1.txt

  1. 統計多個文件信息
wc 1.txt 2.txt 3.txt

  1. 查看目錄下有多少個文件
ls / | wc -w

4.Uniq:檢查及刪除文件文本中的重複出現行(常和sort連用)

參數:

  • c:統計行數
  1. 統計2.txt中每行內容出現的次數
cat 2.txt | sort | uniq -c

  1. 去除2.txt中的重複行
cat 2.txt | sort | uniq 

5. tee:重定向

參數:

  • -a:追加

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-KanUZNuX-1578741850500)(C:\Users\acer\Desktop\新建文件夾\1578659878862.png)]

  1. 統計2.txt中每行內容出現的次數輸出到a.txt,並且把內容顯示在控制檯
sort 2.txt | uniq -c | tee a.txt

  1. 統計2.txt中每行內容出現的次數輸出追加到a.txt,並且把內容顯示在控制檯
sort 2.txt | uniq -c | tee -a a.txt

6. tr:替換或刪除文件中的字符

參數:

  • -d, --delete:刪除指令字符
  1. 將“hello, p”換成"hello, j"
echo "hello, p" | tr "p" "j"

  1. 將“hello”換爲“HELLO”
echo "hello" | tr "[a-z]" "[A-Z]"

  1. 刪除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
  1. 打印輸出第一段
awk '{print $1}' x.txt

  1. 打印輸出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

  1. 匹配有’cc’的內容
awk '/cc/' x.txt

  1. 匹配第1段包含至少連續兩個c的內容
awk '$1 ~ /cc+/' x.txt

  1. 如果匹配到aaa就打印第1,3段,如果匹配到ccc,就打印第1,3,4段
awk '/aaa/ {print $1,$3} /ccc/ {print $1,$3,$4}' x.txt

  1. 如果第3段小於第4段就打印全部
awk '$3<$4 {print $0}' x.txt

  1. 顯示行號
awk '{print NR " " $0}' x.txt # 不能用單引號

  1. 顯示段數
awk '{print NF " " $0}' x.txt

  1. 打印前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
  1. 分段求和,對第二段求和
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 的動作可以搭配正規表示法!
  • = :顯示行號
  1. 列出第2到第5行數據,並顯示行號
nl x.txt |sed -n -e '2,5p'

  1. 刪除前3行數據,並顯示行號
nl x.txt | sed -e '1,3d'

  1. 在第一行後添加’aaaa 111 1 22’
nl x.txt | sed '1a aaaa 111 1  22'

  1. 在第一行前面添加‘begin’
nl x.txt | sed -e 'li begin'


5. 查找包含’aa’的行

sed -ne '/aa/p' x.txt

在這裏插入圖片描述

發佈了87 篇原創文章 · 獲贊 32 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章