码迷,mamicode.com
首页 > 其他好文 > 详细

grep

时间:2015-04-06 19:01:36      阅读:204      评论:0      收藏:0      [点我收藏+]

标签:linux   color   

linux下的文本处理工具

  文本搜索工具:grep,egrep,fgrep

  文件名通配:

    *,?,[],[^]

限定了长度,又限定了可用的字符范围

[root@localhost ~]# alias grep=‘grep --color=auto‘

grep命令:

[root@localhost ~]# grep "root" /etc/passwd

root:x:0:0:root:/root:/bin/bash

operator:x:11:0:operator:/root:/sbin/nologin

[root@localhost ~]# 


强引用和弱引用的区分‘’ ,“”

当在使用变量引用是应使用弱引用(双冒号),来引用变量的替换,如果使用强引用则会直接引用单冒号‘’之中的字符而非变量替换

[root@localhost ~]# user=root

[root@localhost ~]# grep --color=auto ‘$user‘ /etc/passwd

[root@localhost ~]# grep --color=auto "$user" /etc/passwd

root:x:0:0:root:/root:/bin/bash

operator:x:11:0:operator:/root:/sbin/nologin

[root@localhost ~]#


在例:将grep --color=auto别名为:grep1

[root@localhost ~]# alias grep1=‘grep --color=auto‘ 定义别名

[root@localhost ~]# grep1 ‘root‘ /etc/passwd 引用

root:x:0:0:root:/root:/bin/bash

operator:x:11:0:operator:/root:/sbin/nologin

[root@localhost ~]# 


!!这种定义,只对当前shell有效


锚定行首^最左

[root@localhost ~]# grep "^sh" /etc/passwd

shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

[root@localhost ~]# 

锚定行尾$

[root@localhost ~]# grep "sh$" /etc/passwd

root:x:0:0:root:/root:/bin/bash

mark:x:500:500:mark:/home/mark:/bin/bash

[root@localhost ~]# 

锚定^patiern$,模式整行内容

[root@localhost ~]# grep "^sh$" /etc/passwd


锚定词首:\<  也可以用\b

[root@localhost ~]# grep "\<sh" /etc/passwd

shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

b

[root@localhost ~]# grep "\bsh" /etc/passwd

shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

[root@localhost ~]# 

锚定词尾

[root@localhost ~]# grep "sh\>" /etc/passwd

root:x:0:0:root:/root:/bin/bash

mark:x:500:500:mark:/home/mark:/bin

/bash

[root@localhost ~]# 


-A  前

-B  后

-C 上下前后

[root@localhost ~]# grep -A 1 "^sh" /etc/passwd

shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

halt:x:7:0:halt:/sbin:/sbin/halt

[root@localhost ~]# 



1、显示/proc/meminfo文件中以大写或小写S开头的行;用三种方式;

# grep -E "^[sS]" /proc/meminfo

# grep -E "^(s|S)" /proc/meminfo

# egrep -i "^s" /proc/meminfo


2、显示/etc/passwd文件中其默认shell为非/sbin/nologin的用户;

# egrep -v "/sbin/nologin$" /etc/passwd | cut -d: -f1


3、显示/etc/passwd文件中其默认shell为/bin/bash的用户;

# egrep "/bin/bash$" /etc/passwd | cut -d: -f1


4、找出/etc/passwd文件中的一位数或两位数;

# egrep --color=auto "\<[0-9]{1,2}\>" /etc/passwd


5、显示/boot/grub/grub.conf中以至少一个空白字符开头的行;

# egrep "^[[:space:]]+" /boot/grub/grub.conf


6、显示/etc/rc.d/rc.sysinit文件中以#开头,后面跟至少一个空白字符,而后又有至少一个非空白字符的行;

# egrep "^#[[:space:]]+[^[:space:]]+" /etc/rc.d/rc.sysinit



7、打出netstat -tan命令执行结果中以‘LISTEN’,后或跟空白字符结尾的行;

# netstat -tan | egrep "LISTEN[[:space:]]*$"


8、添加用户bash, testbash, basher, nologin (此一个用户的shell为/sbin/nologin),而后找出当前系统上其用户名和默认shell相同的用户的信息;

# egrep "^([[:alnum:]]+\>).*\1$" /etc/passwd


9、显示当前系统上root、fedora或user1用户的默认shell;

# grep -E "^(root|fedora|user1)\>" /etc/passwd | cut -d: -f7


10、找出/etc/rc.d/init.d/functions文件中某单词后面跟一组小括号的行,形如:hello();

# grep -o -E "\<[[:alnum:]]+\>\(\)" /etc/rc.d/init.d/functions


11、使用echo命令输出一个绝对路径,使用grep取出其基名;

扩展:取出其路径名


# echo /etc/rc.d/init.d/functions | grep -o -E "[[:alnum:]]+/?$" | cut -d/ -f1

12、找出ifconfig命令结果中的1-255之间数字;

# ifconfig | grep -E "\<([1-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\>"


 扩展的正则表达式:

字符匹配:

.

[]

[^]

次数匹配:

*: 任意次

?:0或1次

+: 至少1次

{m}:精确匹配m次;

{m,n}:至少m次,至多次;

{m,}:至少m次;

{0,n}:至多次;

位置锚定:

^

$

\<, \b

\>, \b

分组:

()


引用:\1, \2, ...

或者:

a|b:a或者b

或者两侧的所有内容;


命令:

grep -E PATTERN FILE...

egrep PATTERN FILE...


本文出自 “无状态” 博客,谢绝转载!

grep

标签:linux   color   

原文地址:http://mark51.blog.51cto.com/3432122/1629165

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