Linux學習之管道命令

管道命令pipe

1 選取命令

選取信息的分析 一般都是一行一行的來的:

1.1 cut

cut是切的意思,也就是把某一段的信息的某部分切出來,處理信息是以行爲單位的。即把一行的想要的信息拿出來:

命令 作用
cut -d ‘分隔符’ -f fields 用於有特定分隔符字符
cut -c 字符區間 用於排列整齊的訊息

選項與參數:

  • -d :後面接分隔字符。與 -f 一起使用;\
  • -f :依據-d後面的分隔符將一段訊息分區成爲數段,用-f提取出第幾段;
  • -c:以字符的單位取出固定字符區間;

將PATH變量取出 提取第n個路徑

$ echo ${PATH}  輸出PATH信息,信息以:分隔開來
$ echo ${PATH} | cut -d ':' -f 5  	提取第五個信息
$ echo ${PATH} | cut -d ':' -f 3,5 	提取第三個,第五個信息
$ echo ${PATH} | cut -d ':' -f 1-5 	提取第一到五個信息

以:爲分隔符 提取第5個信息以及第一個和第五個
在這裏插入圖片描述
在這裏插入圖片描述

獲取export輸出信息的第12個字符及以後內容

export輸出的內容 ,前11個字符是一樣的,那麼獲取後面不一樣的字符可以使用cut -c

$ export |cut -c 12-
$ export | cut -c 1-11

在這裏插入圖片描述
只留下第12個字符及以後的內容:export |cut -c 12-
在這裏插入圖片描述
同樣也可以把前11個字符截取出來: export | cut -c 1-11,注意 字符的位置是從1開始的
在這裏插入圖片描述

從last信息裏面只取出用戶名

$ last | cut -d ' ' -f 1 以空格爲分隔符取出第一個信息 即用戶名

在這裏插入圖片描述
在這裏插入圖片描述

1.2 grep

cut是取出一行裏面想要的信息,而grep是 對每一行進行分析 假設這一行裏面有我們想要的信息,那就把這一行取出來。

$ grep [-achinv] [--color=auto ] '搜索字符' filename

選項與參數:

  • -a:將binary文件以text文件的方式進行搜索
  • -c:計算找到‘搜索字符串’的次數
  • -i:忽略大小寫
  • -n:輸出行號
  • -v:反向選擇,顯示沒有‘搜索字符串’內容的行
  • –color=auto:可以將找到的關鍵詞部分加上顏色顯示;
  • -o:僅僅將搜索字符串顯示出來

使用例子:

找出含有‘yinhui’的信息:
在這裏插入圖片描述
提取出含有‘yinhui’信息的第一個數據,有兩種方法,可以用之前的cut,也可以用-o選項
在這裏插入圖片描述
將不含有‘yinhui’的信息取出來在這裏插入圖片描述
統計出現‘yinhui’字符的行的數量
在這裏插入圖片描述

排序命令

sort

sort時進行排序的命令,可以依據不同的數據形態進行排序。

$ sort [-fbMnrtuk] [file or stdin]

選項與參數:

  • -f:忽略大小寫的差異
  • -b:忽略最前面的空格符部分
  • -M: 以月份的名字來排序例如JAN。DEC
  • -n:使用純數字來排序(默認是文字形態)
  • -r:反向排序
  • -u:就是unique,相同數據,僅出現一行爲代表;
  • -t:分隔符,預設是【tab】鍵
  • -k:以那個區間(field)來排序

排序記錄在/etc/paswd下的個人賬戶

$ cat /etc/passwd |sort

默認以第一個數據來排序,並且默認文字性 a-z在這裏插入圖片描述

以第三欄排序 /etc/paswd 內容

/etc/paswd 內容是以:分隔開的

$  cat /etc/passwd | sort -t ':' -k 3

在這裏插入圖片描述

利用last 將輸出的數據僅提取賬號,並加以排序 並且一個賬號只出現一次

在這裏插入圖片描述

uniq

如果排序完了,但是我只想每個相同的數據出現一次怎麼辦呢?答案就是unique命令

$ uniq  [-ic]
  • -c:計數
  • -i :忽略大小寫

使用last將賬號列表列出,取出賬號那一欄,進行排序只取一位:

$ last | cut -d ' ' -f 1| sort |uniq		//只篩選一個
$ last | cut -d ' ' -f 1| sort -u   //等同於上條命令
$ last | cut -d ' ' -f 1| sort |uniq -c		// 每個用戶登入的次數

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

wc命令

如果想知道一個文件裏面有多少個字符、字節、多少行,可以使用wc這個命令

$ wc [-lwm]

選項與參數:

  • -l:僅列出行
  • -w:僅列出多少字(英文單字)
  • -m:多少字符

統計一個文件有 多少行 多少字多少字符,

直接只使用wc默認全部統計 :按上面列出來的順序
在這裏插入圖片描述

使用last 可以輸出登入者的信息,但是last的最後兩行並非賬號內容,如何一一行指令取得登入系統的總人次?

$ last | grep [a-zA-Z] | grep -v 'wtmp' | grep -v 'reboot' | grep -v 'unknow' | wc -l

空白符 、wtmp、unknow、reboot、unknow等無關賬號登入者的信息,利用grep取出非空字符,反向選擇沒有那幾個關鍵字的那幾行,在計算行數。
在這裏插入圖片描述
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章