关于tr的问题

为当前最终发行版之前的所有版本提供支持
回复
zipkong
帖子: 76
注册时间: 2010-11-27 22:20
送出感谢: 0
接收感谢: 0

关于tr的问题

#1

帖子 zipkong » 2011-01-09 22:29

man tr发现,tr -d [string]是可以把一段文字中的string删掉的,但是在做实验的时候,发现具体有些出入,例如:
cut -d':' -f1 /etc/passwd |head -n3 |tr -d 'daemon'
意思是,取/etc/passwd里面以:为分割的第一个区域,然后输入前三行,此时运算结果应为
root
daemon
bin
然后在tr -d 'daemon'
我的本意是想之前head -n3输出的结果放入tr中,把daemon删除,我预计的结果是
root
bin
可是实际结果是
rt
空行
bi
我觉得好郁闷,什么回事啊。。。。
头像
astolia
论坛版主
帖子: 3091
注册时间: 2008-09-18 13:11
送出感谢: 1 次
接收感谢: 511 次

Re: 关于tr的问题

#2

帖子 astolia » 2011-01-10 0:42

很简单啊,tr是字符处理工具,不是字符串处理工具,你仔细看tr的man,"delete characters in SET1, do not translate",所以tr -d 'daemon'的真正意义是将所有出现的d、a、e、m、o、n字母全部去除
要想实现你的本意,用grep滤除不要的行就是了
cut -d':' -f1 /etc/passwd | head -n3 | grep -vE '^daemon$'

以后这种问题发到shell编程版去
zipkong
帖子: 76
注册时间: 2010-11-27 22:20
送出感谢: 0
接收感谢: 0

Re: 关于tr的问题

#3

帖子 zipkong » 2011-01-10 8:23

哇,茅塞顿开!!非常感谢!
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙
送出感谢: 4 次
接收感谢: 256 次

Re: 关于tr的问题

#4

帖子 eexpress » 2011-01-10 12:41

茅塞茅塞茅茅塞塞
● 鸣学
回复

回到 “老旧版本支持”