1. grep是UNIX和LINUX中使用最广泛的命令之一。 grep(全局正则表达式版本)允许
对文本文件进行模式查找。如果找到匹配模式, grep打印包含模式的所有行。 grep支持基本正则表达式,也支持其扩展集。 grep有三种变形,即:
Grep:标准grep命令,本章大部分篇幅集中讨论此格式。
Egrep:扩展grep,支持基本及扩展的正则表达式,但不支持\q模式范围的应用,与之相对应的一些更加规范的模式,这里也不予讨论。
Fgrep:快速grep。允许查找字符串而不是一个模式。不要误解单词fast,实际上它与grep速度相当。
2.介绍书上的一个示例:
首先建立一个文件data.txt
第1列:城市位置编号。
第2列:月份。
第3列:存储代码及出库年份。
第4列:产品代号。
第5列:产品统一标价。
第6列:标识号。
第7列:合格数量。
文件内容:
48 Dec 3BC1997 LPSX 68.00 LVX2A 138
483 Sept 3AP1996 USP 65.00 LVX2C 189
47 Otc 3ZL1998 LPSX 43.00 KVM9D 512
219 Dec 3CC1999 CAD 23.00 PVX2A 68
484 Nov 3PL1996 CAD 49.00 PVX2A 234
483 May 3PA1998 USP 37.00 KVM9D 644
216 Sept 3ZL1998 USP 86.00 KVM9E 234
3. grep的一般格式为:
grep [选项]基本正则表达式 [文件]
这里基本正则表达式可为字符串。
grep的选项:
常用的grep选项有:
-c 只输出匹配行的计数。
-i 不区分大小写(只适用于单字符)。
-h 查询多文件时不显示文件名。
-l 查询多文件时只输出包含匹配字符的文件名。
-n 显示匹配行及行号。
-s 不显示不存在或无匹配文本的错误信息。
-v 显示不包含匹配文本的所有行。
举例:
grep -c "48" data.txt
查找有数据48的数据 显示行数
grep -n "48" data.txt
显示有数据48的行 以及行号
grep "48\>" data.txt
精确的抽取48 这中方式更有效
查找不包括48的行
grep -v "48" data.txt
查找sep月份的
grep -i "sep" data.txt #此时大小斜不敏感
查找383,384的有关信息
grep '48[34]' data.txt
查找非48数字的相关信息
grep '^[^48]' data.txt
抽取以L开头,D结尾的所有代码
grep 'K...D' data.txt
查询日期
grep '5..199[6,8]' data.txt
4这个数字出现两次
grep '4\{2,\}' data.txt
219或者216出现的
grep -E '216|219' data.txt
查询空行
grep '^$' data.txt
查询特殊字符
grep '\.' data.txt
查询ip地址
grep '[0-9]\{3\}[0-9]\{3\}[0-9]\{3\}'
4.等价正则表达式
表示 等价正则表达式
[[:upper:]] [A-Z]
[[:lower:]] [a-z]
[[:digit:]] [0-9]
[[:alnum:]] [0-9a-zA-Z]
[[:space:]] 空格或tab键
[[:alpha:]] [a-zA-Z]
举例:
查找3然后两个字母的
grep '3[[:upper:]][[:upper:]]' data.txt
查找以PD结尾的
grep '[[:upper:]][[:upper:]][P,D]' data.txt
5.系统grep命令
ls -l | grep '^d' 只查找文件
ps -ax | grep 'named'
对字符串使用grep
string="Hello This is a test from jack"
echo $string | grep 'jack'
这时jack会显示红色字体
参考书籍: shell编程
对文本文件进行模式查找。如果找到匹配模式, grep打印包含模式的所有行。 grep支持基本正则表达式,也支持其扩展集。 grep有三种变形,即:
Grep:标准grep命令,本章大部分篇幅集中讨论此格式。
Egrep:扩展grep,支持基本及扩展的正则表达式,但不支持\q模式范围的应用,与之相对应的一些更加规范的模式,这里也不予讨论。
Fgrep:快速grep。允许查找字符串而不是一个模式。不要误解单词fast,实际上它与grep速度相当。
2.介绍书上的一个示例:
首先建立一个文件data.txt
第1列:城市位置编号。
第2列:月份。
第3列:存储代码及出库年份。
第4列:产品代号。
第5列:产品统一标价。
第6列:标识号。
第7列:合格数量。
文件内容:
48 Dec 3BC1997 LPSX 68.00 LVX2A 138
483 Sept 3AP1996 USP 65.00 LVX2C 189
47 Otc 3ZL1998 LPSX 43.00 KVM9D 512
219 Dec 3CC1999 CAD 23.00 PVX2A 68
484 Nov 3PL1996 CAD 49.00 PVX2A 234
483 May 3PA1998 USP 37.00 KVM9D 644
216 Sept 3ZL1998 USP 86.00 KVM9E 234
3. grep的一般格式为:
grep [选项]基本正则表达式 [文件]
这里基本正则表达式可为字符串。
grep的选项:
常用的grep选项有:
-c 只输出匹配行的计数。
-i 不区分大小写(只适用于单字符)。
-h 查询多文件时不显示文件名。
-l 查询多文件时只输出包含匹配字符的文件名。
-n 显示匹配行及行号。
-s 不显示不存在或无匹配文本的错误信息。
-v 显示不包含匹配文本的所有行。
举例:
grep -c "48" data.txt
查找有数据48的数据 显示行数
grep -n "48" data.txt
显示有数据48的行 以及行号
grep "48\>" data.txt
精确的抽取48 这中方式更有效
查找不包括48的行
grep -v "48" data.txt
查找sep月份的
grep -i "sep" data.txt #此时大小斜不敏感
查找383,384的有关信息
grep '48[34]' data.txt
查找非48数字的相关信息
grep '^[^48]' data.txt
抽取以L开头,D结尾的所有代码
grep 'K...D' data.txt
查询日期
grep '5..199[6,8]' data.txt
4这个数字出现两次
grep '4\{2,\}' data.txt
219或者216出现的
grep -E '216|219' data.txt
查询空行
grep '^$' data.txt
查询特殊字符
grep '\.' data.txt
查询ip地址
grep '[0-9]\{3\}[0-9]\{3\}[0-9]\{3\}'
4.等价正则表达式
表示 等价正则表达式
[[:upper:]] [A-Z]
[[:lower:]] [a-z]
[[:digit:]] [0-9]
[[:alnum:]] [0-9a-zA-Z]
[[:space:]] 空格或tab键
[[:alpha:]] [a-zA-Z]
举例:
查找3然后两个字母的
grep '3[[:upper:]][[:upper:]]' data.txt
查找以PD结尾的
grep '[[:upper:]][[:upper:]][P,D]' data.txt
5.系统grep命令
ls -l | grep '^d' 只查找文件
ps -ax | grep 'named'
对字符串使用grep
string="Hello This is a test from jack"
echo $string | grep 'jack'
这时jack会显示红色字体
参考书籍: shell编程