LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1828|回复: 6

cut使用错误

[复制链接]
发表于 2010-8-14 10:49:52 | 显示全部楼层 |阅读模式
有个文本如下:

Alice Chebba                973-555-2015
Barbara Swingle        201-555-9257
Jeff Goldberg                201-555-3378

Liz Stachiw                212-555-2298
Susan Goldberg        201-555-7776
Tony Iannino                973-555-1295

字母代表人名,数字代表电话号码,人名的两部分间以空格隔开,人名与电话号码之间以分隔符隔开。若文本名为1,输入命令  cut   -f1   1        后,理论上应该只输出人名,但为何得到图一结果?

若输入  cut  -d\t   -f1   1,得到图二结果。

我输入  sed  -n  l  1  后理应把制表符换成\t,但却得到图三结果。

请问这是什么原因?难道不同的cut命令在不同的Linux发行版中还有区别?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主| 发表于 2010-8-14 15:52:40 | 显示全部楼层
我在Slackware13.0下出现这个问题,别的人用Ubuntu、Fedora等却出现正确的结果,不知是不是有些常用命令与不同的系统有关系?
回复 支持 反对

使用道具 举报

发表于 2010-8-15 00:25:03 | 显示全部楼层
现在没有用 slackware, 但是我记得 cut 中 -f -d 和后面的要有空格分隔,不应该直接写。你可以man一下。
slackware 中你 ls /var/log/packages | grep cut 可以查看具体的版本。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-8-15 11:11:19 | 显示全部楼层
cut的-f和-d参数后要直接加数字或其他字符,这点儿应该没问题。但我在/var/log/packages中没有cut,这点儿很奇怪,而且用   sed  's/g/p/'  file     时,竟然把 file  中所有出现g的地方换成了p,不是应该只把第一次出现的g换成p 吗?我用   cut   --version   显示的是7.4,是不是版本有些低造成的?
回复 支持 反对

使用道具 举报

发表于 2010-8-16 10:15:31 | 显示全部楼层
sed 's/g/p/' file 是替换每一行第一次出现的g。只有一行内有多个g,才会出现有未替换的g.
回复 支持 反对

使用道具 举报

发表于 2010-8-18 11:12:18 | 显示全部楼层
sed 的意思就是流编辑,他是对每一行处理的。
回复 支持 反对

使用道具 举报

发表于 2010-9-1 11:24:39 | 显示全部楼层
如果 仅仅
cut -f1 1 呢?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表