免费注册 查看新帖 |

Chinaunix

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

cut 处理文件时碰到的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-12-25 12:42 |只看该作者 |倒序浏览
我用cut -c14-19,8-9 filename
但是取出来的内容两列是连在一起的,有办法在取出来的两列之间加上空格吗?哪怕其它的字符也照啊?
还有,为什么我把14-19放在前面,但是取出来的内容,它还是排在8-9那一段的后面呢?好像它是按文件的正常顺序来排的呢?

[ 本帖最后由 linux_gao 于 2007-12-25 12:44 编辑 ]

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
2 [报告]
发表于 2007-12-25 12:52 |只看该作者
paste <(cut -c14-19 filename) <(cut 8-9 filename)

cut两次或用sed/awk吧

论坛徽章:
0
3 [报告]
发表于 2007-12-25 12:55 |只看该作者
因为我处理的文件比较多,总觉得通过paste的方式效率就会降很多,我试一下sed/awk

论坛徽章:
0
4 [报告]
发表于 2007-12-25 12:57 |只看该作者
cut (GNU coreutils) 5.94
--output-delimiter=" "

至于顺序,好像不能调整

论坛徽章:
0
5 [报告]
发表于 2007-12-25 12:59 |只看该作者
不过你这种paste不会写到文件里面去,也很不错,顺序的问题也能解决了,谢谢

论坛徽章:
0
6 [报告]
发表于 2007-12-25 13:16 |只看该作者

  1. sed -r -i 's/(([^ ]+ +){7})(([^ ]+ +){2})(([^ ]+ +){4})(([^ ]+ +){6}).*/\7xxxx\3/'  文件
复制代码

解释:
假设字段之间是以空格分隔的
根据需求,文本应该是分成5部分,第一部分1-7字段,第二部分8-9字段,第三部分10-13字段,第四部分14-19字段,第五部分,剩余

因此,[^ ]+ + 作为一个字段的匹配(包括尾随空格)
{n} 表示多少个字段

xxxx 中间添加的任意字符

用参数 -r 是表示使用扩展的正则表达式,否则,表达式中的+ ? () {} 都需要用转义符
-i 表示直接修改文件

论坛徽章:
0
7 [报告]
发表于 2007-12-25 13:53 |只看该作者
好的,多谢了.
我那个文本字段之间不是用空格分开的,不然我肯定用awk,不用cut了,
我用了上面那个paste的方式,基本上性能,操作都还很方便的.

论坛徽章:
7
荣誉版主
日期:2011-11-23 16:44:17子鼠
日期:2014-07-24 15:38:07狮子座
日期:2014-07-24 11:00:54巨蟹座
日期:2014-07-21 19:03:10双子座
日期:2014-05-22 12:00:09卯兔
日期:2014-05-08 19:43:17卯兔
日期:2014-08-22 13:39:09
8 [报告]
发表于 2007-12-25 14:02 |只看该作者
原帖由 linux_gao 于 2007-12-25 13:53 发表
好的,多谢了.
我那个文本字段之间不是用空格分开的,不然我肯定用awk,不用cut了,
我用了上面那个paste的方式,基本上性能,操作都还很方便的.

check man page of gnu awk for the word FIELDWIDTHS

论坛徽章:
0
9 [报告]
发表于 2007-12-25 14:05 |只看该作者
sed应该是最方便的
sed 's/.......\(..\)....\(......\).*/\2 \1/' file

论坛徽章:
0
10 [报告]
发表于 2007-12-25 15:39 |只看该作者
猜想LZ的文件列按长度区分的吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP