Linux命令:grep命令AND、OR、NOT例項
簡介
在grep中,我們有相當於OR和NOT運算子的選項,但沒有AND運算子。但是,我們可以使用模式來模擬AND。在本文的例子將有助於理解如何使用grep命令的OR, AND和NOT運算進行文字的搜尋。
本文將使用下面的employee.txt檔案作為例子講解:
$ cat employee.txt
100 Thomas Manager Sales $5,000
200 Jason Developer Technology $5,500
300 Raj Sysadmin Technology $7,000
400 Nisha Manager Marketing $9,500
500 Randy Manager Sales $6,000
Grep OR操作符
可以使用下面提供的4種方法來實現grep OR功能。
1. 使用“\|”
如果使用不帶任何選項的grep命令,則需要使用"\|"來分隔條件OR的多個模式。
grep 'pattern1\|pattern2' filename
例如,grep來自employee.txt檔案的Tech或Sales。如果分隔符|前沒有反斜槓,則以下操作無效。
[jinguang1@localhost ~]$ grep "Tech|Sales" employee.txt
[jinguang1@localhost ~]$ grep "Tech\|Sales" employee.txt
100 Thomas Manager Sales $5,000
200 Jason Developer Technology $5,500
300 Raj Sysadmin Technology $7,000
500 Randy Manager Sales $6,000
2. 使用-E選項
grep -E選項用於擴充套件正規表示式。如果使用帶-E選項的grep命令,則只需使用|為條件OR來分隔多個模式。
grep -E 'pattern1|pattern2' filename
例如,grep來自employee.txt檔案的Tech或Sales。僅使用“|”來作為多個模式。
[jinguang1@localhost ~]$ grep -E "Tech|Sales" employee.txt
100 Thomas Manager Sales $5,000
200 Jason Developer Technology $5,500
300 Raj Sysadmin Technology $7,000
500 Randy Manager Sales $6,000
3. 使用egrep
egrep和grep -E功能完全相同。
egrep 'pattern1|pattern2' filename
例如,grep來自employee.txt檔案的Tech或Sales。僅使用“|”來作為多個模式。
[jinguang1@localhost ~]$ egrep "Tech|Sales" employee.txt
100 Thomas Manager Sales $5,000
200 Jason Developer Technology $5,500
300 Raj Sysadmin Technology $7,000
500 Randy Manager Sales $6,000
4. 使用grep -e
使用grep -e選項,你僅能使用一個引數。如果要使用多個模式,則需要在命令中提供多個-e選項。
grep -e pattern1 -e pattern2 filename
例如,grep來自employee.txt檔案的Tech或Sales。使用多個-e選項來支援多個OR模式。
[jinguang1@localhost ~]$ grep -e Tech -e Sales employee.txt
100 Thomas Manager Sales $5,000
200 Jason Developer Technology $5,500
300 Raj Sysadmin Technology $7,000
500 Randy Manager Sales $6,000
Grep AND
1. 使用-E "pattern1.*pattern2"
grep中並沒有AND操作符,但你可以使用-E選項來模擬。
grep -E 'pattern1.*pattern2' filename
grep -E 'pattern1.*pattern2|pattern2.*pattern1' filename
下面的例子將grep所有同時包含“Dev”和"Tech"的行,並且保持包含字串的相應順序。
[jinguang1@localhost ~]$ grep -E "Dev.*Tech" employee.txt
200 Jason Developer Technology $5,500
下面的例子將grep所有包含“Manager"和"Sales"的行,且這個字串可以以任意順序出現。
[jinguang1@localhost ~]$ grep -E "Manager.*Sales|Sales.*Manager" employee.txt
100 Thomas Manager Sales $5,000
500 Randy Manager Sales $6,000
2. 使用多個grep命令
可以使用管道來連線多個grep命令來模擬AND操作符。
grep -E 'pattern1' filename | grep -E 'pattern2'
下面的例子將grep所有包含“Manager"和"Sales"的行,且這個字串可以以任意順序出現。
[jinguang1@localhost ~]$ grep Manager employee.txt | grep Sales
100 Thomas Manager Sales $5,000
500 Randy Manager Sales $6,000
Grep NOT
使用grep -v選項可以模擬NOT操作符。-v選項為相反匹配設計,它可以match所有不包含指定模式的行。
grep -v 'pattern1' filename
下面的例子中將顯示所有不包含“Sales”關鍵字的行。
[jinguang1@localhost ~]$ grep -v Sales employee.txt
200 Jason Developer Technology $5,500
300 Raj Sysadmin Technology $7,000
400 Nisha Manager Marketing $9,500
下面的例子中將顯示所有的Manager和Developer,但忽略Sales。
[jinguang1@localhost ~]$ grep -E "Manager|Developer" employee.txt | grep -v Sales
200 Jason Developer Technology $5,500
400 Nisha Manager Marketing $9,500
相關文章
- 15個Linux Grep命令使用例項(實用、常用)Linux
- 【Linux命令】grep命令Linux
- Linux命令篇 - grep 命令Linux
- linux下grep命令用法例項教程Linux
- Linux grep 命令Linux
- 【Linux】grep命令Linux
- linux每日命令(35):grep命令Linux
- linux命令之grepLinux
- Linux 中grep命令中 -P選項的作用Linux
- Linux基礎命令---grepLinux
- Linux grep命令的使用Linux
- linux grep命令詳解Linux
- linux命令: ps,grep,killLinux
- Linux命令grep詳解Linux
- grep命令
- Linux系統中的管道命令、grep命令、sed命令和awk命令Linux
- grep命令的-o和-P選項
- Linux中head命令例項Linux
- Linux中printf命令使用例項Linux
- Linux中介紹who命令例項Linux
- Linux grep命令詳細教程Linux
- grep命令使用
- Linux 中的 JQ 命令使用例項Linux
- Linux中ip命令的使用例項Linux
- Linux 中 ss 命令的使用例項Linux
- Linux中的basename命令使用例項Linux
- Linux 常用基本命令 cat grepLinux
- 14 個 Linux grep 命令的例子Linux
- Tee命令使用例項
- nmap命令常用例項
- awk命令使用例項
- Linux系統中head命令例項Linux
- Linux中的15個‘echo’ 命令例項Linux
- grep、find命令整理
- git grep命令用法Git
- grep 命令詳解
- 【SHELL】grep 命令用法
- Linux常用命令記錄-grepLinux