041139411160服务咨询:工作日9:00 - 18:00

如何使用grep命令实现精确过滤

Linux

事先我们准备好了一个测试文件“test.txt”内容如下:

# cat -n test.txt 
1  sky
2  skyarch
3  skysky

现在我们通过grep来精确过滤“sky”的这一行,有以下5个方法。

1. 参数-w表示单词的完全一致匹配。可以记成是word的w。
# grep -w “sky” test.txt
sky
2. 参数-x表示整行匹配,因为sky是第1行整行的全部内容所以可以使用该参数。
# grep -x “sky” test.txt
sky
3. 正则表达“\b”表示字符锁定,“\bsky\b”就是匹配sky。
# grep “\bsky\b” test.txt
sky
4. 正则表达“^”表示以开头,“$”表示以结尾,所以“^sky$”也就是整行匹配。
# grep “^sky$” test.txt
sky
5. 参数-E表示多条件,或者与扩展正则表达式搭配使用。扩展正则“\<\>”锁定字符,“\”就是匹配sky。
# grep -E “\” test.txt
Sky

其实在实际工作中我们事先准备的测试文本有一定的局限性,即被过滤的内容占据是完整的一行,如果被过滤的内容占据的是一行中的一部分,上述的五种方法仍有三种适用,测试文本如下:

# cat -n test.txt 
1  ok sky kongqiao
2  ok skyarch kongqiao
3  ok skysky kongqiao

有效的三种方法。

# grep -w “sky” test.txt
ok sky kongqiao

# grep “\bsky\b” test.txt
ok sky kongqiao 

# grep -E “\” test.txt
ok sky kongqiao
lxfangs