shell命令之grep

grep是强大的文本搜索工具,它以行为单位,在一个或多个文件中搜索字符串模板,模板后的所有字符串被看作文件名,搜索结果显示到标准输出,不影响原文件内容。搜索成功返回0,失败返回1,文件不存在时返回2。

正则表达式元字符

grep的强大之处在于模式串支持正则表达式,以下是常用的正则表达式元字符集:

当然,grep也支持POSIX字符集。

常用选项

下面是grep常用的选项:

注意事项

实例

grep -rw --exclude "\*.c" "main" .
openssl md5 /etc/passwd | grep -Eo "[[:xdigit:]]{32}"
grep -Eo "\b[[:alpha:]]+\b" /etc/passwd | sort | uniq -c
grep -v "^$" file1 > file2

常用扩展

结合-o和-P选项,grep可以方便的提取需要的字符串,这里介绍两种常用的模式。

比如,文本文件a.txt中内容如下:

"train_no":"5l0000G10241","station_train_code":"G102","start_station_telecode":"AOH"

提取车次可以用:grep -oP '(?<=station_train_code":")[^"]+(?=")' a.txt

Table of Contents