grep
grep一般格式为:
grep [选项]基本正则表达式[文件]
基本正则表达式可为字符串。
grep常用选项:
-c # 只输出匹配行的计数
-i # 不区分大小写
-h # 查询多文件时不显示文件名
-l # 查询多文件时只输出包含匹配字符的文件名
-n # 显示匹配行及行号
-s # 不显示不存在或无匹配文本的错误信息
-v # 反向查找
-e # 使用正则表达式
-w # 精确匹配
-o # 查询所有匹配字段
-P # 使用perl正则表达式
-A3 # 打印匹配行和下三行
-B3 # 打印匹配行和上三行
-C3 # 打印匹配行和上下三行
grep使用例子:
cat test.txt
48 Dec 3BC1997 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
grep -v "a" txt # 过滤关键字符行
grep -w ‘a\>‘ txt # 精确匹配字符串
grep -i "a" txt # 大小写敏感
grep "a[bB]" txt # 同时匹配大小写
grep ‘[0-9]\{3\}‘ txt # 查找0-9重复三次的所在行
grep -E "word1|word2|word3" file # 任意条件匹配
grep word1 file | grep word2 |grep word3 # 同时匹配三个
匹配IP地址:
ifconfig |grep ‘[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}‘
英文字符精确匹配:
grep -w "48" test.txt #-w 匹配单词48
grep "\<48\>" test.txt #符号\< 和 \> 分别匹配字符串的开头和结尾
中文精确匹配:
cat test.txt
---------------------------------
首席大人
豪门:首席大人
豪门:首席大人(上)
豪门:首席大人(中)
豪门:首席大人(下)
---------------------------------
1、精确匹配:豪门:首席大人
grep "豪门:首席大人$" test.txt
$匹配行尾
2、精确匹配:首席大人
grep "^首席大人$" test.txt
^匹配行首,$匹配行尾
grep用于if判断
if echo abc | grep "a" > /dev/null 2>&1
then
echo "abc"
else
echo "null"
fi