Chinaunix首页 | 论坛 | 博客
  • 博客访问: 445719
  • 博文数量: 184
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 594
  • 用 户 组: 普通用户
  • 注册时间: 2013-12-17 16:24
个人简介

我是一只小小鸟

文章分类

全部博文(184)

文章存档

2016年(1)

2015年(55)

2014年(127)

2013年(1)

分类: LINUX

2014-03-28 14:58:56

1 grep

1.1 Grep在单个文件中查询

[root@test7 scripts]# ls

bonnie++_test   iozone_test  mdtest_test 

1.1.1 在当前目录下的 iozone_test文件中查找并打印含字符mkdir的行;

[root@test7 scripts]# grep "mkdir" iozone_test 

    mkdir $DIR_TEST

mkdir $DIR_RESULT

查找iozone_test文件中查找含有字符mkdir的行数;

[root@test7 scripts]# grep -c "mkdir" iozone_test 

2

在当前目录下的mdtest_test 文件下查找并打印含字符mkdir的行;

1.1.2  显示匹配模式所有行数和字符串所在行;

[root@test7 scripts]# grep mkdir -n iozone_test 

29:    mkdir $DIR_TEST

46:    mkdir $DIR_RESULT

1.1.3 精确匹配

[root@test7 scripts]# grep "mkdir\>"  iozone_test 

    mkdir $DIR_TEST

mkdir $DIR_RESULT

1.1.4 查询空行、查询以某个字符开头或结尾的行;

^$

查询空行并打印出查询行

^字符

^echo,查询以echo开头的行并打印出查询行

字符$

end$,查询以end结尾的行并打印查询行

1  [root@test7 scripts]# grep -n "^$" iozone_test 

18:

23:

32:

2  [root@test7 scripts]# grep -n "^echo" iozone_test 

47:echo "The test directory is created successfully!"

48:echo "Test results stored in the $DIR_RESULT. "

52:echo "...Under Testing..."

60:echo "...The test of iozone is over..."

C [root@test7 scripts]# grep -n "end$" iozone_test 

65:#end

 

1.1.5 匹配特定字符,查询有特殊含义的字符

诸如- $ . /   [] ^ | \ + ?等,查询字符时如果字符中包含这些特定字符,需要在特定字符前加“\”。例#grep grub\.conf grep.conf

例 查询并打印iozone_test 中含“-”的行;

[root@test7 scripts]# grep -n "\-" iozone_test 

9:#Date:         2014-03-17

22:datetime=$(date "+%m-%d-%Y    %H:%M:%S")

1.1.6  目录查询

ls -l |grep "^d" 如果要查询目录列表中的目录() 同:ls -d *

ls -l |grep "^[^d]" 在一个目录中查询不包含目录的所有文件(开头为非d)

ls -l |grpe "^d..x..x" 查询其他用户和用户组成员有可执行权限的目录集合


[root@test7 ~]# ls -l | grep "^d"

drwxr-xr-x. 2 root root       4096 Aug 10  2012 Desktop

drwxr-xr-x. 2 root root       4096 Aug 10  2012 Documents

drwxr-xr-x. 2 root root       4096 Aug 10  2012 Downloads

drwxr-xr-x. 2 root root       4096 Aug 10  2012 Music

drwxr-xr-x. 2 root root       4096 Aug 10  2012 Pictures

[root@test7 ~]# ls -l | grep "^[^d]"

total 2355296

-rw-r--r--  1 root root  121072254 Sep  6  2013 a

-rw-------. 1 root root       1948 Aug 10  2012 anaconda-ks.cfg

 

1.1.7 排除自身

[root@vmtest70 ~]# ps -ef |grep telnet |grep -v grep

在显示的进程中抽出telnet进程,并丢弃ps中的grep进程。

 

 

查询过程中报错处理:

例  查询bonnie++_test 中字符“++

[root@test7 scripts]# grep -n "\++" bonnie++_test 

Binary file bonnie++_test matches 

该提示意思是grep认为bonnie++_test文件是二进制文件(二进制文件等价于文本文件),实际不是;默认情况下grep不处理二进制文件,需要加参数-a来添加处理权限。

[root@test7 scripts]# grep  -a -n "\++" bonnie++_test 

81:for((i=1;i<=2000;i++))

阅读(699) | 评论(0) | 转发(0) |
0

上一篇:ps指令

下一篇:C语言指针数组和数组指针

给主人留下些什么吧!~~