歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> grep命令基礎練習題

grep命令基礎練習題

日期:2017/2/28 15:56:09   编辑:Linux教程

常用的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

PS:可以在方括號中使用^記號,表示行首不是某字符

6 顯示含有九月份的行
[[email protected]]# grep -i Sept file.txt

[[email protected]]# grep -E "[Ss]ept" file.txt
483 Sept 5AP1996 USP 65.00 LVX2C 189
216 sept 3ZL1998 USP 86.00 KVM9E 234

PS :使用- i開關可以屏蔽月份S e p t的大小寫敏感

7 顯示以K開頭,以D結尾的所有代碼
[[email protected]]# grep "K...D" file.txt
47 Oct 3ZL1998 LPSX 43.00 KVM9D 512
483 may 5PA1998 USP 37.00 KVM9D 644

PS:點.代表任意一個字符,由於代碼是五位字符的字符串,所以中間用三個點表示任意字符

8 顯示頭兩個是大寫字母,中間兩個任意,並以C結尾的代碼
[[email protected]]# grep "[A-Z][A-Z]..C" file.txt
483 Sept 5AP1996 USP 65.00 LVX2C 189
219 dec 2CC1999 CAD 23.00 PLV2C 68
484 nov 7PL1996 CAD 49.00 PLV2C 234

PS:[A-Z]表示任意一個大寫字母

9 查詢所有以5開始以1 9 9 6或1 9 9 8結尾的所有記錄
[[email protected]]# grep "5..199[68]" file.txt
483 Sept 5AP1996 USP 65.00 LVX2C 189
483 may 5PA1998 USP 37.00 KVM9D 644
Copyright © Linux教程網 All Rights Reserved