歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> Linux教程

grep命令基礎練習題

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