在linux的grep命令中如何使用or,and,not操作符呢?
其實,在grep命令中,有or和not操作符的等價選項,但是並沒有grep and這種操作符。不過呢,可以使用patterns來模擬and操作的。下面會舉一些例子來說明在linux的grep命令中如何使用or,and,not。
在下面的例子中,會用到這個employee.txt檔案,如下:
[plain] view plain copy
$ 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 操作符
以下四種方法均能實現grep or的操作。個人推薦方法3.
1.使用 \|
如果不使用grep命令的任何選項,可以通過使用 '\|' 來分割多個pattern,以此實現or的操作。
[plain] view plain copy
grep 'pattern1\|pattern2' filename
例子如下:
[plain] view plain copy
$ 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 選項可以用來擴充套件選項為正規表示式。 如果使用了grep 命令的選項-e,則應該使用 | 來分割多個pattern,以此實現or操作。
[plain] view plain copy
grep -e 'pattern1|pattern2' filename
例子如下:
[plain] view plain copy
$ 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 (不帶任何選項)命令,以此根據分割的多個pattern來實現or操作.
[plain] view plain copy
egrep 'pattern1|pattern2' filename
例子如下:
[plain] view plain copy
$ 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.使用選項 -e
使用grep -e 選項,只能傳遞乙個引數。在單條命令中使用多個 -e 選項,得到多個pattern,以此實現or操作。
[plain] view plain copy
grep -e pattern1 -e pattern2 filename
例子如下:
[plain] view plain copy
$ 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 選項可以實現and操作。
[plain] view plain copy
grep -e 'pattern1.*pattern2' filename
grep -e 'pattern1.*pattern2|pattern2.*pattern1' filename
第乙個例子如下:(其中兩個pattern的順序是指定的)
[plain] view plain copy
$ grep -e 'dev.*tech' employee.txt
200 jason developer technology $5,500
第二個例子:(兩個pattern的順序不是固定的,可以是亂序的)
[plain] view plain copy
$ grep -e 'manager.*sales|sales.*manager' employee.txt
2.使用多個grep命令
可以使用多個 grep 命令 ,由管道符分割,以此來實現 and 語義。
[plain] view plain copy
grep -e 'pattern1' filename | grep -e 'pattern2'
例子如下:
[plain] view plain copy
$ grep manager employee.txt | grep sales
100 thomas manager sales $5,000
500 randy manager sales $6,000
(三)grep not操作
1.使用選項 grep -v
使用 grep -v 可以實現 not 操作。 -v 選項用來實現反選匹配的( invert match)。如,可匹配得到除下指定pattern外的所有lines。
[plain] view plain copy
grep -v 'pattern1' filename
例子如下:
[plain] view plain copy
$ grep -v sales employee.txt
200 jason developer technology $5,500
300 raj sysadmin technology $7,000
400 nisha manager marketing $9,500
當然,可以將not操作與其他操作聯合起來,以此實現更強大的功能 組合。
如,這個例子將得到:『manager或者developer,但是不是sales』的結果:
[plain] view plain copy
$ egrep 'manager|developer' employee.txt | grep -v sales
200 jason developer technology $5,500
400 nisha manager marketing $9,500
NGINX實現IF語句裡的AND,OR多重判斷
nginx實現if語句裡的and,or多重判斷 一 nginx rewrite規則相關指令有if rewrite set return break等 1.其中rewrite是最關鍵的指令。乙個簡單的nginx rewrite規則語法如下 rewrite b html play.php?video 1...
對列舉值 Enum 進行位操作(AND OR)
這裡我們可以解釋為什麼第三個值showtoolbox可以為4,5.而不能為3。也就是說它的值不應該是前幾項值的復合值。我的理解是 不能前幾位的和 有乙個比較簡單的方法就是用2的n次方來依次為每一項賦值,例如 1,2,4,8,16,32,64.對列舉值 enum 進行位操作 and or 這是我在的第...
C語言程式設計實現grep
簡介 1.字串比較strncmp函式與strcmp函式不同的地方是引數裡面是否有n。n代表比較的字元的個數。但是strncmp的功能只能從開頭比較,沒有grep的功能 2.對於接受的引數,如 argv 1 argv 2 採用巨集定義來的方法來區分引數之間不同的含義。如 define key ptr ...