Linux 中的 Pipe,Grep 和 Sort 命令
什麼是 Linux 中的管道
管道是 Linux 中的一個命令,它允許你使用兩個或多個命令,以便一個命令的輸出作為下一個命令的輸入。簡而言之,每個程序的輸出像管道一樣直接作為輸入到下一個。符號 |
表示管道。
管道可幫助你同時混合兩個或多個命令並連續執行它們。你可以使用功能強大的命令,可以快速執行復雜的任務。
讓我們用一個例子來理解這一點。
當你使用 cat
命令檢視跨越多個頁面的檔案時,提示會快速跳轉到檔案的最後一頁,而你在中間看不到內容。
為避免這種情況,你可以將 cat
命令的輸出傳遞給 less
,這樣一次只能顯示一個滾動長度的內容。
cat filename | less
pg
和 more
命令
你也可以使用 pg
,而不是 less
。
cat Filename | pg
或者
cat Filename | more
這樣,你可以悠閒地檢視檔案,只需按Enter鍵向下滾動即可。
$ cat Filename | more
First
Second
Third
--More--
grep
命令
假設你要從文字檔案中搜尋特定的郵政編碼,當然你可以自己手動瀏覽內容以查詢資訊。但更好的選擇是使用 grep
命令。它將掃描文件以獲取所需資訊,並以你想要的格式顯示結果。
grep search_string
舉個例子,
$ cat testfile | grep Monday
Monday
在這裡,grep
命令搜尋檔案 testfile
,搜尋字串 Monday
。
以下選項可與此命令一起使用。
選項 | 功能 |
---|---|
-v |
顯示與搜尋到的字串不匹配的所有行 |
-c |
僅顯示匹配行的數量 |
-n |
顯示匹配的行及其編號 |
-i |
匹配時不區分大小寫 |
-l |
僅顯示含有字串的檔名 |
讓我們試一下在同一個檔案上面使用第一個選項 -i
,
使用 -i
選項,grep
已從所有行中過濾出字串 a
(不區分大小寫)。
$ cat testfile | grep -i a
Apple
Banana
Goat
sort
命令
此命令有助於按字母順序排序檔案內容。
該命令的語法是:
sort Filename
比如檔案 abc
的內容是,
dishan@vultr:~$ cat abc
a
b
c
d
e
使用 sort
命令
dishan@vultr:~$ sort abc
a
b
c
d
e
這個命令的選項如下,
選項 | 功能 |
---|---|
-r |
反轉排序 |
-n |
按數字排序 |
-f |
不區分大小寫的排序 |
下面的例子將檔案 abc
中內容反向排序。
dishan@vultr:~$ sort - r abc
e
d
c
b
a
什麼是過濾器?
Linux 有很多過濾命令,如 awk
、grep
、sed
、spell
和 wc
。過濾器從一個命令獲取輸入,進行一些處理,並給出輸出。
當你管道兩個命令時,第一個命令的過濾輸出將被賦予下一個命令。
讓我們藉助一個例子來理解這一點。
檔案 sample
的內容是,
dishan@vultr:~$ cat sample
Cat
Tiger
Apple
Poes
Banana
Drink
我們想列出不包含字元 a
的行,但結果按反順排列。
為此,可以使用以下語法。
cat sample | grep -v a | sort - r
讓我們看看結果。
dishan@vultr:~$ cat sample | grep -v a | sort - r
Drink
Poes
Tiger
Poes
複習:
- 管道
|
傳送一個命令的輸出作為另一個命令的輸入。 - 過濾器從一個命令獲取輸入,進行一些處理,並給出輸出。
grep
命令可用於在文字文件中查詢字串和值- 通過
grep
的管道是最常用的用法之一 sort
命令按字母順序排序檔案內容less
,pg
和more
命令用於將長檔案分成可讀位