grep 命令

-i :忽略大小写的不同,所以大小写视为相同
-n :顺便输出行号
-w: 作为整个单词进行匹配
-o : 只显示匹配内容
-c :显示匹配行数

grep "^[a-zA-Z]" pgm.s

显示 pgm.s 文件中以字母开头的所有行

grep -r ‘energywise’ *
#在当前目录及其子目录下搜索'energywise'行的文件
grep -l -r ‘energywise’ *     
#在当前目录及其子目录下搜索'energywise'行的文件,但是不显示匹配的行,只显示匹配的文件
grep -n 't[ae]st' regular_express.txt
#字符类的反向选择 [^] :如果想要搜索到有 oo 的行,但不想要 oo 前面有 g,如下
grep -n '[^g]oo' regular_express.txt
#假设我 oo 前面不想要有小写字节,所以,我可以这样写 [^abcd....z]oo , 
#但是这样似乎不怎么方便,由於小写字节的 ASCII 上编码的顺序是连续的
grep -n '[^a-z]oo' regular_express.txt
#当我们在一组集合字节中,如果该字节组是连续的,例如大写英文/小写英文/数字等等,
# 就可以使用[a-z],[A-Z],[0-9]等方式来书写,那么如果我们的要求字串是数字与英文呢?
#就将他全部写在一起,变成:
[a-zA-Z0-9]
#如果我想要让 the 只在行首列出呢? 这个时候就得要使用定位字节了
grep -n '^the' regular_express.txt

^ 符号,在字符类符号(括号[])之内与之外是不同的! 在 [] 内代表『反向选择』,在 [] 之外则代表定位在行首的意义!

#行尾结束为小数点 (.) 的那一行:
grep -n '\.$' regular_express.txt
#找出空白行:
grep -n '^$' regular_express.txt

. (小数点):代表『一定有一个任意字节』的意思
* (星号):代表『重复前一个字符, 0 到无穷多次』的意思,为组合形态

#找出 g??d 的字串,亦即共有四个字节, 起头是 g 而结束是 d
grep -n 'g..d' regular_express.txt
#当我们需要『至少两个 o 以上的字串』时,就需要 ooo*
grep -n 'ooo*' regular_express.txt
#找出 g 开头与 g 结尾的行,当中的字符可有可无
grep -n 'g.*g' regular_express.txt
#想要找出『任意数字』的行?因为仅有数字,所以就成为
grep -n '[0-9][0-9]*' regular_express.txt

限定连续重复字符的范围 { }
. * 只能限制0个或多个, 如果要确切的限制字符重复数量,就用{范围} 。范围是数字用,隔开 2,5 表示2~5个,
2表示2个,2, 表示2到更多个
注意,由于{ }在SHELL中有特殊意义,因此作为正则表达式用的时候要用/转义一下。

搜索包含两个o的字符串的行
grep -n 'o/{2/}' regular_express.txt 
搜索g后面跟2~5个o,后面再跟一个g的字符串的行。
grep -n 'go/{2,5/}g' regular_express.txt 
搜索包含g后面跟2个以上o,后面再跟g的行。。
grep -n 'go/{2,/}g' regular_express.txt 
#去除 空白行和行首为 #的行
grep -v '^$' regular_express.txt | grep -v '^#'
#使用支持扩展正则表达式的 egrep 与扩展特殊符号 | ,会方便许多
egrep -v '^$|^#' regular_express.txt 
grep -E "[1-9]+"
或
egrep "[1-9]+"
打印样式匹配所位于的字符或字节偏移:
echo gun is not unix | grep -b -o "not"
7:not
#一行中字符串的字符便宜是从该行的第一个字符开始计算,起始值为0。选项 -b -o 一般总是配合使用。

这里列出几个扩展特殊符号:

+, 于 . * 作用类似,表示 一个或多个重复字符。
?, 于 . * 作用类似,表示0个或一个字符。
|,表示或关系,比如 'gd|good|dog' 表示有gd,good或dog的串
(),将部分内容合成一个单元组。

比如 要搜索 glad 或 good 可以这样 'g(la|oo)d'。
()的好处是可以对小组使用 + ? * 等。比如要搜索A和C开头结尾,中间有至少一个(xyz) 的串,可以这样 : 'A(xyz)+C'

在grep搜索结果中包括或者排除指定文件:
#只在目录中所有的.php和.html文件中递归搜索字符"main()"
grep "main()" . -r --include *.{php,html}

#在搜索结果中排除所有README文件
grep "main()" . -r --exclude "README"

#在搜索结果中排除filelist文件列表里的文件
grep "main()" . -r --exclude-from filelist


参考:
https://www.cnblogs.com/ggjucheng/archive/2013/01/13/2856896.html
http://man.linuxde.net/grep

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 162,710评论 4 376
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,839评论 2 308
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 112,295评论 0 255
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,776评论 0 223
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 53,198评论 3 297
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 41,074评论 1 226
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,200评论 2 322
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,986评论 0 214
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,733评论 1 250
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,877评论 2 254
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,348评论 1 265
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,675评论 3 265
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,393评论 3 246
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,209评论 0 9
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,996评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 36,212评论 2 287
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 36,003评论 2 280

推荐阅读更多精彩内容