日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Linux管道命令——《鸟哥的Linux私房菜》笔记

發布時間:2024/3/24 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux管道命令——《鸟哥的Linux私房菜》笔记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Linux管道命令——《鳥哥的Linux私房菜》筆記


0 前言

看完書之后,總感覺不記錄下來的話,很快就會忘了,然后又需要重新到處翻書找資料,所以還是把內容記錄下來,方便以后復習。本文大部分是書中的內容,中間加入部分自己的理解以及嘗試的例子。


1 簡單使用

  • 管道命令使用“|”這個界定符號,用于兩個命令中間,作用是把左邊命令的標準輸出作為右邊命令的標準輸入。

  • 例如要查詢/etc目錄下的文件詳情,但是內容太多會刷滿屏幕,查看起來不方便,就可以利用管道命令通過less命令來查看輸出。

    ls -al /etc | less

  • 需要注意的點:

    • 管道命令僅能處理標準輸出(standard output),會忽略出錯時輸出的信息(standard error output);
    • 管道命令命令必須要能夠接受來自前一個命令的數據成為標準輸出繼續處理才行。

2 選取命令

2.1 cut

2.1.1 命令介紹


  • cut命令可以將一段信息的某一段“切”出來,處理的信息是以“”為單位。
  • 命令說明如下:

  • cut -d ‘分隔字符’ -f fields # 該命令將每行按“分隔字符”分割,然后選取fields參數的那幾部分
  • cut -c 字符范圍 # 該命令用于排列整齊的信息,可以取出每一行在選定字符范圍內的串
  • 參數:
    -d : 后面接分隔字符,與-f一起使用;
    -f : 依據-d的 分隔字符,將一段信息切割成為數段,用-f取出第幾段(可以取多段)
    -c : 以字符為單位取出固定字符區間的串

2.1.2 命令示例

1 獲取PATH變量的第五個路徑。
因為在Linux系統下,PATH變量的值是按‘:’分隔的,所以分隔字符是‘:’。

echo $PATH | cut -d ‘:’ -f 5

如果要獲取第1和第3個路徑,則:

echo $PATH | cut -d ‘:’ -f 1,3 # 經試驗,命令中寫1,3 與 3,1 的結果是一樣的,都會先輸出第一行

如果要獲取連續的一段區間,如第3~6,則:

echo $PATH | cut -d ‘:’ -f 3-6 #這是一個閉區間

如果要獲取從某一部分開始,一直到末尾,如從第二個路徑開始,則:

echo $PATH | cut -d ‘:’ -f 2-

2 將export輸出的信息取得第12個字符

export | cut -c 12

其他區間的選擇方式與上面相同。
-c 參數主要用于排列整齊的信息

2.1.3 注意事項

cut命令處理多空格相連的數據比較難


2.2 grep

2.2.1 命令介紹

  • cut命令是在一行信息中取出某部分,而grep則是分析一行信息,若當中有我們需要的信息,就把該行拿出來。
  • 命令說明如下:
  • grep [-acinv] [–color=auto] ‘所要查找的字符串’ filename
  • 參數
    -a : 將binary文件以text文件的方式查找數據;
    -c : 計算找到‘所要查找的字符串’的次數;
    -i : 查找時忽略大小寫;
    -n : 輸出行號;
    -v : 反向選擇,即顯示出沒有‘所要查找的字符串’內容的那一行;
    –color=auto : 將找到的關鍵詞部分加上顏色顯示。

2.2.2 命令示例

1 將/etc/passwd文件當中有root出現的那一行提取出來

cat /etc/passwd | grep ‘root’

2 將/etc/passwd文件當中不含有root的那一行取出

cat /etc/passwd | grep -v ‘root’

3 將/etc/passwd文件當中有root出現的那一行提取出來,且僅取第三列

cat /etc/passwd | grep ‘root’ | cut -d ‘:’ -f 3


3 排序命令

3.1 sort

3.1.1 命令介紹

  • sort命令可以依據不同的數據類型來排序。
  • 命令說明如下:
  • sort [-fbMnrtuk] [file or stdin]
  • 參數
    -f : 忽略大小寫的差異;
    -b : 忽略最前面的空格符部分;
    -M : 以月份的名字來排序,例如JAN,DEC等的排序方法;
    -n : 使用數字類型進行排序(默認是字符串類型);
    -r : 反向排序;
    -u : 相同的數據中,僅出現一行;
    -t : 設置分隔符,默認是用 [tab] 分隔;
    -k : 指定以哪個區間進行排序,默認是第一個區間。

3.1.2 命令示例

1 將/etc/passwd文件中的信息按賬號進行排序

cat /etc/passwd | sort

2 /etc/passwd文件中的信息是按 : 來分隔的,以第三列進行排序

  • cat /etc/passwd | sort -t ‘:’ -k 3 # 這是把第三列按字符串類型進行排序
  • cat /etc/passwd | sort -t ‘:’ -k 3 -n # 這是把第三列按數字類型進行排序
  • cat /etc/passwd | sort -t ‘:’ -k 3 -n -r # 這是把第三列按數字類型逆序排序

3 僅把/etc/passwd文件中的賬號取出,并按字典序逆序排序

  • cat /etc/passwd | cut -d ‘:’ -f 1 | sort -r
  • cut -d ‘:’ -f 1 /etc/passwd | sort -r

3.2 uniq

3.2.1 命令介紹

  • 把輸入的重復數據僅顯示一次
  • 命令說明如下:
  • uniq [-ic]
  • 參數
    -i : 忽略大小寫字符的不同;
    -c : 計數,即顯示每個數據出現的次數

3.2.2 命令示例

1 將/ect/passwd 文件中第四列的數據按數字類型正序排好后,重復的數據僅顯示一次

  • cut -d ‘:’ -f 4 /etc/passwd | sort -n | uniq
  • cut -d ‘:’ -f 4 /etc/passwd | sort -nu

上面兩種方式的效果是相同的,那么為什么還要有uniq呢?這是因為uniq能夠顯示數據重復的次數

2 在1的基礎上,顯示出數據重復的次數

  • cut -d ‘:’ -f 4 /etc/passwd | sort -n | uniq -c

此時,顯示的數據最左邊為重復次數,后接一個空格,隨后是cut獲取到的排好序的數據

3 在2的基礎上,把顯示的數據按重復次數逆序排好

  • cut -d ‘:’ -f 4 /etc/passwd | sort -n | uniq -c | sort -t ’ ’ -k 1 -n

因為uniq -c命令后,重復次數在第一列,且與數據以空格隔開,所以用sort命令按空格分隔,按第一列以數字類型排序


3.3 wc

3.3.1 命令介紹

  • wc命令可以列出數據總共有多少行,多少字(英文單字),多少字符
  • 命令說明如下:
  • wc [-lwm]
  • 參數
    -l : 僅列出行;
    -w : 僅列出多少字(英文單字);
    -m : 多少字符。
  • 如果不帶參數的話,則列出行數、字數以及字符數

3.3.2 命令示例

統計/etc/passwd文件里面總的行數、字數和字符數

cat /etc/passwd | wc


4 未完待續


5 后記

上述命令的參數僅為《鳥哥的Linux私房菜》中列出來的常用的參數,實際上,上述命令并不止有那幾個參數,具體的可以使用man指令查看。

總結

以上是生活随笔為你收集整理的Linux管道命令——《鸟哥的Linux私房菜》笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。