码迷,mamicode.com
首页 > 系统相关 > 详细

linux grep 正则表达式

时间:2017-08-05 16:48:32      阅读:227      评论:0      收藏:0      [点我收藏+]

标签:nal   选择   练习   反向   没有   linux   表示   bsp   单引号   

命令别名设置
惯用命令特别长的时候可以起一个别名
查看有哪些别名
#alias
#alias rm=‘rm -i‘
去掉命令别名
#unalias lm

grep 可以解析一行文字,取得关键字,若该行存在关键字,就会整行列出来。

 

grep [-acinv] [--color=auto] ‘搜索字符串‘ filename

-a:将binary文件以text文件的方式搜寻数据
-c:计算找到‘搜索字符串‘的次数
-i:忽略大小写的不同,所以大小写视为相同
-n:输出行号
-v:反向选择,亦即显示出没有 ‘搜寻字符串‘ 内容的那一行!

#grep -n root /etc/passwd

当前目录下找出jsen 或者json
#grep -n js[eo]n  *

正则表达式

[] :匹配[]内字符,它只代表某“一个”字符,可以是一个单字符,也可以是字符序列。可以使用 - 表示[]内字符序列范围,如用[1-5]代替[12345]
^word :待查找的字符串(word)在行首 例子:grep -n ‘^#‘ test.txt (查找行首为#开始的那一行,并列出行号)
word$:待查找的字符串word在行尾
\ :转义字符,将特殊符号的特殊意义去除 例:grep -n \‘ test.txt 查找含义单引号‘的那一行
[^]:反向选择,
[^g]oo:不想要oo前面有g
. (小数点): 代表一定有一个任意字符的意思
* (星号) : 代表重复零个到无穷多个的前一个字符
\{n,m}\ 连续n到m个的前一个RE字符,若为\{n}\则是连续n个的前一个RE字符,若为\{n\}\则是连续n个以上的前一个RE字符
grep -n ‘go\{2,3}\‘g test.txt 在g与g之间有2到3个o存在的字符串

#grep -n [^g]oo test.txt

oo前面不想要有小写字符
#grep -n [^a-z]oo test.txt

取得有数字的那一行
#grep -n [0-9] test.text

the 只在行首列出
#grep -n ‘^the‘ test.txt
oo前面不想要小写字符
#grep -n [^a-z]oo test.txt

开头是小写字符的那一行
#grep -n ^[a-z]oo test.txt

#grep -n ‘^[[:lower:]]‘ test.txt

找出行尾结束为小数点(.)的那行
#grep -n ‘\.$‘ test.txt
\为转义字符

空白行 (命令不起作用)
#grep -n ‘^$‘ test.txt

不要是#的那行
grep -v ‘^#‘

找出g??d的字符,即共有4个字符
grep -n ‘g..d‘ test.txt

查找前面至少有一个o字符
grep -n ‘oo*‘ test.txt

开头与结尾都是g,但是两个g之间仅能存在至少一个o
grep -n ‘goo*g‘ test.test

grep -n ‘g*g‘

开头结尾都是g
grep -n ‘g.*g‘

任意数字行
grep -n ‘[0-9][0-9]*‘ test.txt

练习两个o字符串
grep -n ‘o\{2}\‘
{} 在shell有特殊意义,因此需要使用转义字符让它失去特殊意义字符

g后面接2到5个o
grep -n ‘go\{2,5}\‘ test.txt

列出连接文件标头会是‘lrwxrwxrwx‘
#ls -l /etc | grep ‘^|‘

sed awk 工具

sed 可以分享 standard input ,而且可以将数据进行替换、删除、新增、选取特定行的功能

#nl /etc/passwd | sed ‘2,5d‘
删除2到5行

linux grep 正则表达式

标签:nal   选择   练习   反向   没有   linux   表示   bsp   单引号   

原文地址:http://www.cnblogs.com/newlangwen/p/7290518.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!