常用的grep選項是:
-c 只輸出匹配行的計數。
-i 不區分大小寫(只適用於單字符)。
-h 查詢多文件時不顯示文件名。
-l 查詢多文件時只輸出包含匹配字符的文件名。
-n 顯示匹配行及行號。
-s 不顯示不存在或無匹配文本的錯誤信息。
-v 顯示不包含匹配文本的所有行。
第1列:城市位置編號。
第2列:月份。
第3列:存儲代碼及出庫年份。
第4列:產品代號。
第5列:產品統一標價。
第6列:標識號。
第7列:合格數量。
] [
file.txt文件內容:
48 Dec 3BC1977 LPSX 68.00 LVX2A 138
483 Sept 5AP1996 USP 65.00 LVX2C 189
47 Oct 3ZL1998 LPSX 43.00 KVM9D 512
219 dec 2CC1999 CAD 23.00 PLV2C 68
484 nov 7PL1996 CAD 49.00 PLV2C 234
483 may 5PA1998 USP 37.00 KVM9D 644
216 sept 3ZL1998 USP 86.00 KVM9E 234
練習:
1 含有“48”字符串的行的總數
[[email protected]]# grep -c 48 file.txt
4
2 顯示含有“48”字符串的所有行的行號
[[email protected]]# grep -n 48 file.txt
1:48 Dec 3BC1977 LPSX 68.00 LVX2A 138
2:483 Sept 5AP1996 USP 65.00 LVX2C 189
5:484 nov 7PL1996 CAD 49.00 PLV2C 234
6:483 may 5PA1998 USP 37.00 KVM9D 644
3 精確匹配只含有“48”字符串的行
[[email protected]]# grep "48\>" file.txt
48 Dec 3BC1977 LPSX 68.00 LVX2A 138
PS:使用g r e p抽取精確匹配的一種更有效方式是在抽取字符串後加\ >
4 抽取代碼為4 8 4和4 8 3的城市位置
[[email protected]]# grep -E "48[3|4]\>" file.txt
483 Sept 5AP1996 USP 65.00 LVX2C 189
484 nov 7PL1996 CAD 49.00 PLV2C 234
483 may 5PA1998 USP 37.00 KVM9D 644
PS:使用[ ]來指定字符串范圍
5 顯示使行首不是4或8
[[email protected]]# grep -v "^[4|8]" file.txt
[[email protected]]# grep -v "^[48]" file.txt
[[email protected]]# grep -v "^[4,8]" file.txt
[[email protected]]# grep "^[^48]" file.txt #這個是直接最簡單的方法
219 dec 2CC1999 CAD 23.00 PLV2C 68
216 sept 3ZL1998 USP 86.00 KVM9E 234