QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1168|回复: 0

linux从入门到精通读薄(五)cut和paste

[复制链接]
发表于 2003-11-7 10:10:58 | 显示全部楼层 |阅读模式
5-3 简单的数据处理

5-3-1 cut和paste

sed和tr在处理文件的行时非常有用,而cut命令提供了提取特定列的简单方法:

$ cut -d: -f1 pw.test
root
pc
carey
mot
grex

(-d指明字段分隔符为“:”
(-f1)指提取第一字段

[例]
提取pw.test的登录名和目录,将它们分别放在不同的文件/tmp/p1和/tmp/p6中:

$ cut -d: -f1 pw.test >/tmp/p1
$ cut -d: -f6 pw.test >/tmp/p6

可以用paste命令将两个文件中的信息合成一个表:

$ paste /tmp/p1 /tmp/p6
root        /root/
pc        /usr1/pc
carrey        /usr1/carey
mot        /usr1/mot
grex        /usr1/mot

paste将在字段之间自动插入分隔符,默认为Tab(ctrl-i),但你可以用-d开关来自定义。

[例子]
从date命令输出的日期和时间中提取分钟数

不带参数的date命令将用固定格式显示日期和时间:

$ date
Sun        Jun         4        17:27:23        BST        2003

问题在于日期字段4,它小于10,系统在它前面加了空格来保持字段的正确长度。如果告诉cut命令用空格作为字段分隔符,多出的空格将被看作一个额外的字段。

解决的办法是先用tr命令将多个空格压缩为一个空格:

$ date | tr -s " "
Sun Jun 4 17:27:23 BST 2003

现在可以用空格作为分隔符来提取时间了:

$ date | tr -s " " | cut -d" " -f4
17:27:23

可以继续提取分钟数:

$ date | tr -s " " | cut -d" " -f4 | cut -d: -f2
27

还有一种更简单的办法,使用-b开关来切出需要的字段:

$ date |cut -b15-16
27

(待续)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-7 10:37 , Processed in 0.037417 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

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