linux搜索过滤器,Unix和Linux管道(pipe)和过滤器(filter)使用介绍
上一章Unix和Linux教程請查看:打印文件和發送郵件
在本章中我們將詳細討論Unix中的管道和過濾器。你可以將兩個命令連接在一起,使一個程序的輸出成為下一個程序的輸入,以這種方式連接的兩個或多個命令形成一個管道。
要生成管道,請在兩個命令之間的命令行上放置豎線(|)。當一個程序從另一個程序獲取其輸入時,它對該輸入執行一些操作,并將結果寫入標準輸出,這個過程被稱為過濾器。
一、grep命令
grep命令在一個或多個文件中搜索具有特定模式的行,grep命令語法如下:
$grep pattern file(s)
“grep”這個名稱來自ed(一個Unix行編輯器)命令g/re/p,意思是“全局搜索一個正則表達式并打印包含它的所有行”。
正則表達式可以是一些純文本(例如一個單詞)和/或用于模式匹配的特殊字符。
grep最簡單的用法是查找由單個單詞組成的模式。它可以在管道中使用,這樣只有包含給定字符串的輸入文件的那些行才會被發送到標準輸出。如果你不給grep一個文件名來讀取,它將讀取它的標準輸入——這是所有過濾程序的工作方式。
$ ls -l | grep ".so"
-rw-r--r-- 1 user user 232482 5月 20 2017 gson-2.5.jar
-rw-r--r-- 1 user user 13432 10月 20 2015 libhello-jni.so
-rw-r--r-- 1 user user 62684 5月 27 2017 libhello.so
-rwxr-xr-x 1 root root 8678 5月 30 2017 so.m
有多種選項可以與grep命令一起使用:
編號選項 & 描述
1-v
打印所有與模式不匹配的行。
2-n
打印匹配的行及其行號。
3-l
僅打印具有匹配行的文件名稱(字符“l”)
4-c
只打印匹配行的計數。
5-i
匹配大小寫。
現在讓我們使用一個正則表達式,它告訴grep查找包含“carol”的行,后跟0或正則表達式中縮寫為“.*”的其他字符,然后后跟“Aug”。這里我們使用-i選項來進行不區分大小寫的搜索:
$ls -l | grep -i "carol.*aug"
-rw-rw-r-- 1 carol doc 1605 Aug 23 07:35 macros
$
二、sort命令
sort命令按字母或數字順序排列文本行。下面的示例對food文件中的行進行排序:
$ sort chars
c++ java
earth mars
italino espanol
shell linux
ubuntu redhat
sort命令默認情況下按字母順序排列文本行。有許多選項可以控制排序:
編號描述
1-n
按數字排序(例如:10將在2之后排序),忽略空格和制表符。
2-r
反轉排序的順序。
3-f
將大小寫排序在一起。
4+x
排序時忽略第一個x字段。
可以將兩個以上的命令鏈接到管道中,以前面使用grep的管道為例,我們可以進一步按照大小順序對8月份修改的文件進行排序。下面的管道由ls、grep和sort命令組成:
$ls -l | grep "Aug" | sort +4n
-rw-rw-r-- 1 C doc 1605 Aug 23 07:35 macros
-rw-rw-r-- 1 S doc 2488 Aug 15 10:51 intro
-rw-rw-rw- 1 S doc 8515 Aug 6 15:30 ch07
-rw-rw-rw- 1 S doc 11008 Aug 6 14:10 ch02
$
該管道按大小順序對你在8月份修改的目錄中的所有文件進行排序,并將它們打印到終端屏幕上。sort選項+4n跳過四個字段(字段由空格分隔),然后按數字順序對行進行排序。
三、pg和more命令
長輸出通常可以在屏幕上壓縮,但如果你運行文本通過更多或使用pg命令作為過濾器,一旦屏幕上充滿了文本顯示就會停止。
假設你有一個很長的目錄清單。為了更容易地讀取排序后的清單,將輸出通過以下管道傳輸:
$ls -l | grep "Aug" | sort +4n | more
-rw-rw-r-- 1 C doc 1605 Aug 23 07:35 macros
-rw-rw-r-- 1 G doc 2488 Aug 15 10:51 intro
-rw-rw-rw- 1 G doc 8515 Aug 6 15:30 ch07
-rw-rw-r-- 1 G doc 14827 Aug 9 12:40 ch03
.
.
.
-rw-rw-rw- 1 G doc 16867 Aug 6 15:56 ch05
--More--(74%)
一旦屏幕充滿了由按文件大小排序的行組成的文本,屏幕就會被填滿。在屏幕的底部是更提示符,你可以在這里輸入命令來移動已排序的文本。完成此屏幕之后,可以使用more程序討論中列出的任何命令。
總結
以上是生活随笔為你收集整理的linux搜索过滤器,Unix和Linux管道(pipe)和过滤器(filter)使用介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 家具板材十大品牌有谁了解?能不能给点参考
- 下一篇: linux dup用法,Unix_Lin