免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3298 | 回复: 7
打印 上一主题 下一主题

[文本处理] cut与awk的区别 [复制链接]

论坛徽章:
5
程序设计版块每日发帖之星
日期:2016-04-15 06:20:00每日论坛发贴之星
日期:2016-04-15 06:20:0015-16赛季CBA联赛之八一
日期:2016-07-08 09:20:28操作系统版块每日发帖之星
日期:2016-08-03 06:20:002016科比退役纪念章
日期:2016-10-30 13:59:12
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-05-17 10:28 |只看该作者 |倒序浏览
cut -d " " -f 1  3.txt 和awk  {print  $1}  3.txt
  

[root@SDBSTEST2 tmp]# cat 3.txt
1 2 3 4 5 6
4 5 6 7 8 9
3 4 5 6 7 8
4 5 6 7 8 9
e  r t  y u i
d  f g  h j k

这两个命令cut -d " " -f 1  3.txt 和 awk  {print  $1}  3.txt的输出结果是一样的,我想问一下cut和awk有哪些区别?
有没有awk不能做的而cut可以做的?  
另外一个问题:
如果我的文本文件是这样的:
[root@SDBSTEST2 tmp]# cat 3.txt
1   2  3 4 5 6
4   5  6 7 8 9
3   4  5 6 7 8
4   5  6 7 8 9
e   r   t y  u i
d   f   g h  j k

即第一列和第二列之间有三个空格,第二列和第三列之间有两个空格。第三列和第四列,第四列和第五列,第五列和第六列之间分别是一个空格,
我如果想用cut和awk分别来取出第三列或者第四行,应该如何来写?
据我所知 cut -d" " -f 是以一个空格为分隔符的,多个空格就不行了,那这是不是cut命令的局限性?

求职 : 技术支持/维
论坛徽章:
0
2 [报告]
发表于 2016-05-17 10:43 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
5
程序设计版块每日发帖之星
日期:2016-04-15 06:20:00每日论坛发贴之星
日期:2016-04-15 06:20:0015-16赛季CBA联赛之八一
日期:2016-07-08 09:20:28操作系统版块每日发帖之星
日期:2016-08-03 06:20:002016科比退役纪念章
日期:2016-10-30 13:59:12
3 [报告]
发表于 2016-05-18 15:57 |只看该作者
谢谢超人,这个命令确实是可以使用。

论坛徽章:
5
程序设计版块每日发帖之星
日期:2016-04-15 06:20:00每日论坛发贴之星
日期:2016-04-15 06:20:0015-16赛季CBA联赛之八一
日期:2016-07-08 09:20:28操作系统版块每日发帖之星
日期:2016-08-03 06:20:002016科比退役纪念章
日期:2016-10-30 13:59:12
4 [报告]
发表于 2016-05-18 15:58 |只看该作者
如果要用awk来做,应该是什么命令?

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
5 [报告]
发表于 2016-05-18 16:05 |只看该作者
回复 4# 274920831

取出第三列或者第四行(=>列),应该如何来写?

$ awk '{print $3,$4}' 3.txt
3 4
6 7
5 6
6 7
t y
g h

论坛徽章:
5
程序设计版块每日发帖之星
日期:2016-04-15 06:20:00每日论坛发贴之星
日期:2016-04-15 06:20:0015-16赛季CBA联赛之八一
日期:2016-07-08 09:20:28操作系统版块每日发帖之星
日期:2016-08-03 06:20:002016科比退役纪念章
日期:2016-10-30 13:59:12
6 [报告]
发表于 2016-05-18 16:17 |只看该作者
哦,明白了,不管两列之间有多少连续的空格,awk  -F的默认值都当作一个空格来处理,可以这么理解吧

论坛徽章:
2
luobin
日期:2016-06-17 17:46:36lufei
日期:2016-06-17 17:49:16
7 [报告]
发表于 2016-05-18 21:51 |只看该作者
我的理解是 在某些情况两者都可以使用。但是cut的域分隔符只能是单个字符,而awk的域分隔符可以是多个字符,so,awk更强大。

论坛徽章:
0
8 [报告]
发表于 2016-06-04 21:57 |只看该作者
awk比cut强大的多,cut的功能都可以通过awk来完成,反过就未必
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP