Chinaunix首页 | 论坛 | 博客
  • 博客访问: 10805760
  • 博文数量: 2905
  • 博客积分: 20098
  • 博客等级: 上将
  • 技术积分: 36298
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-23 05:00
文章存档

2012年(1)

2011年(3)

2009年(2901)

分类: LINUX

2009-03-23 11:28:52

tr [-ds] SET1
参数说明:
-d  :删除 SET1 这个字符串
-s  :取代掉重复的字符!
范例:
[root @test /root]# last | tr '[a-z]' '[A-Z]'         <==将小写改成大写
[root @test /root]# cat /etc/passwd | tr -d :       <==嘿嘿! : 这个符号在 /etc/passwd 中不见了!
[root @test /root]# cat /home/test/dostxt | tr -d '\r' > dostxt-noM   <==将 DOS 档案的字尾符号 ^M 的符号去除!
说明:
其实这个指令也可以写在『正规表示法』里头!因为他也是由正规表示法的方式来取代数据的!以
上面的例子来说,使用 [] 可以设定一串字呢!也常常用来取代档案中的怪异符号!例如上面第三个
例子当中,可以去除 DOS 档案留下来的 ^M 这个断行的符号!这东西相当的有用!相信处理 Linux & Windows 系统中的人们最麻烦的一件事就是这个事情啦!亦即是 DOS 底下会自动的在每行行尾加入 ^M 这个断行符号!这个时候我们可以使用这个 tr 来将 ^M 去除! ^M 可以使用 \r 来代
 
grep
 
语法:
[root @test /root ]# grep [-acinv] '搜寻字符串' filename
参数说明:
-a :将 binary 档案以 text 档案的方式搜寻数据
-c :计算找到 '搜寻字符串' 的次数
-i :忽略大小写的不同,所以大小写视为相同
-n :顺便输出行号
-v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行!
范例:
[root @test /root]# grep 'root' /var/log/secure 
将 /var/log/secure 这个档案中有 root 的那一行秀出来
[root @test /root]# grep -v 'root' /var/log/secure
若该行没有 root 才将数据秀出来到屏幕上!
[root @test /root]# last | grep root
若该行有 root 才将数据秀出来到屏幕上!
[root @test /root]# grep [A-Z]ANPATH /etc/man.config
将 /etc/man.config 这个档案当中,所有有:
[任何一个大写字符]后面接 ANPATH 的那一行就显示出来!
例如 AANPATH, BANPATH.... ZANPATH 等等!
说明:
grep 是一个很常见的指令,最重要的功能就是进行字符串数据的比对了,需要说明的是『grep 在一个档案中查寻一个字符串时,他是以"整行"为单位来数据的撷取的!』也就是说,假如一个档案内有 10 行,其中有两行具有你所搜寻的字符串,则将那两行显示在屏幕上,其它的就丢弃了!而 grep 除了可以进行档案的资料搜寻之外,也常常被应用在 input/output 的数据处理当中,例如常见的管线命令 ( pipe ) 就可以常常到他的踪影!以上面的例子来看,我们可以发现前两个例子是查寻档案的内容,有没有加上 -v 所显示出来的结果是『相反的!』,而第三个例子则是以 pipe 的功能进行数据的处理的喔!
 
例题一:找出这个档案里面含有 know 这个字符,并将行号列出来:
[root @test /root ]# grep -n 'know' regexp.txt
3:* I don't know how to do this *
grep 会一行一行的去比对 know 这个字符串,请注意,大小写是不一样的!
当该行里面没有 know 这个字符串时, grep 就会将该行舍弃而不显示出来,
不过,到第三行时,出现了 know 了,所以第三行就会被显示出来啦!
例题二:找出这个档案里面含有 * 这个字符,并将行号列出来:
[root @test /root ]# grep -n '\*' regexp.txt
3:* I don't know how to do this *
请特别留意喔,在正规表示法里面有相当多的『特殊字符』存在,而要
取消掉这些特殊字符的属性时,反斜线『\』的存在就显的特别重要了!
在这个例子中,或许你会发现使用 grep -n '*' regexp.txt 也可以得到
相同的结果,但是,良好的习惯是需要养成的,这里,请以较为正统的
正规表示法来去除 * 这个特殊字符的属性,对您以后一定会有很多的好处的!
例题三:我要将所有 know 不论大小写都列出来,并列出行号:
[root @test /root]# grep -ni 'know' regexp.txt
3:* I don't know how to do this *
4:# I don't Know how to do this $
5:^ I don't KNOW how to do this @
如果不理会大小写的差异,加入 -i 这个参数吧!列出行号就以 -n 来达成!

本文出自 “落落” 博客,谢绝转载!

阅读(1692) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~