免费注册 查看新帖 |

ChinaUnix.net

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1627 | 回复: 9

[文本处理] sed处理文件? [复制链接]

论坛徽章:
0
发表于 2018-04-30 21:31 |显示全部楼层
有A文件两列数据,如何将红色标记的换成制表符(\t)变成想要的B文件呢?
scaffold5729_0.0_139982_147655_5        scaffold5729_0.0_139982_147655_5        
scaffold5755_0.0_39667_53398_5  scaffold5755_0.0_39667_53398_5
scaffold5755_0.0_39657_53398_5  scaffold5755_0.0_39657_53398_5  
super11_227743_234237_5 super11_227743_234237_5
super11_227752_234257_5 super11_227752_234257_5
super11_227726_234237_5 super11_227726_234237_5

B文件如下:
scaffold5729_0.0_139982_147655_5        scaffold5729 139982 147655         
scaffold5755_0.0_39667_53398_5  scaffold5755 39667 53398  
scaffold5755_0.0_39657_53398_5  scaffold5755 39657 53398
super11_227743_234237_5 super11 227743 234237
super11_227752_234257_5 super11 227752 234257  
super11_227726_234237_5 super11 227726 234237



论坛徽章:
4
15-16赛季CBA联赛之青岛
日期:2018-07-09 14:17:2815-16赛季CBA联赛之八一
日期:2018-08-06 15:30:0515-16赛季CBA联赛之广东
日期:2018-08-09 09:11:2115-16赛季CBA联赛之佛山
日期:2019-02-14 09:26:31
发表于 2018-04-30 23:25 |显示全部楼层
  1. sed -ri 's#(_0\.0_)|(_)|(_5)#\t#g' file
复制代码

论坛徽章:
4
15-16赛季CBA联赛之青岛
日期:2018-07-09 14:17:2815-16赛季CBA联赛之八一
日期:2018-08-06 15:30:0515-16赛季CBA联赛之广东
日期:2018-08-09 09:11:2115-16赛季CBA联赛之佛山
日期:2019-02-14 09:26:31
发表于 2018-04-30 23:25 |显示全部楼层

复制代码

论坛徽章:
0
发表于 2018-05-01 13:02 |显示全部楼层
回复 2# christmas1102

你好,这样的结果是两列的红色的都被替换了,我只是想第二列的红色部分被\t替换掉

论坛徽章:
6
程序设计版块每日发帖之星
日期:2016-05-11 06:20:00操作系统版块每日发帖之星
日期:2016-05-12 06:20:00每日论坛发贴之星
日期:2016-05-12 06:20:00操作系统版块每日发帖之星
日期:2016-05-14 06:20:00程序设计版块每日发帖之星
日期:2016-05-31 06:20:00每日论坛发贴之星
日期:2016-05-31 06:20:00
发表于 2018-05-01 14:35 |显示全部楼层
本帖最后由 1cpuer 于 2018-05-01 14:37 编辑

回复 1# wd_my

# [ /home/soio/1bs/awks ] {2018-05-01 14:29:07}
: 1525156147:0;➜  sed -r 's#[ ]#@#g; s#(@@*.*)(_0\.0_)#\1[\t]#g; s#(@@*.*)(_)(.*)(_5)#\1[ \t]\3[ \t]#g' x_5
scaffold5729_0.0_139982_147655_5@@@@@@@@scaffold5729[    ]139982[     ]147655[     ]@@@@@@@@
scaffold5755_0.0_39667_53398_5@@scaffold5755[    ]39667[     ]53398[     ]
scaffold5755_0.0_39657_53398_5@@scaffold5755[    ]39657[     ]53398[     ]@@
super11_227743_234237_5@super11_227743[     ]234237[     ]
super11_227752_234257_5@super11_227752[     ]234257[     ]
super11_227726_234237_5@super11_227726[     ]234237[     ]

将@改 \x20 | [ ] ; {[ \t] 改 \t}

其实用 awk 更好理解
$2 gsub()

论坛徽章:
0
发表于 2018-05-01 14:58 |显示全部楼层
回复 5# 1cpuer

不好意思大神,没能理解你的思路

论坛徽章:
6
程序设计版块每日发帖之星
日期:2016-05-11 06:20:00操作系统版块每日发帖之星
日期:2016-05-12 06:20:00每日论坛发贴之星
日期:2016-05-12 06:20:00操作系统版块每日发帖之星
日期:2016-05-14 06:20:00程序设计版块每日发帖之星
日期:2016-05-31 06:20:00每日论坛发贴之星
日期:2016-05-31 06:20:00
发表于 2018-05-01 15:10 |显示全部楼层
本帖最后由 1cpuer 于 2018-05-01 15:15 编辑

回复 6# wd_my

# [ /home/soio/1bs/awks ] {2018-05-01 15:07:04}
: 1525158424:0;➜  sed -r 's#([ ][ ]*.*)(_0\.0_)#\1\t#g; s#([ ][ ]*.*)(_)(.*)(_5)#\1\t\3\t#g' x_5
scaffold5729_0.0_139982_147655_5        scaffold5729    139982    147655            
scaffold5755_0.0_39667_53398_5  scaffold5755    39667    53398   
scaffold5755_0.0_39657_53398_5  scaffold5755    39657    53398      
super11_227743_234237_5 super11_227743    234237   
super11_227752_234257_5 super11_227752    234257   
super11_227726_234237_5 super11_227726    234237



   
# [ /home/soio/1bs/awks ] {2018-05-01 15:13:28}
: 1525158808:0;➜  awk '{gsub(/(_0\.0_)|(_)|(_5)/, " ", $2)}1' x_5
scaffold5729_0.0_139982_147655_5 scaffold5729 139982 147655
scaffold5755_0.0_39667_53398_5 scaffold5755 39667 3398
scaffold5755_0.0_39657_53398_5 scaffold5755 39657 3398
super11_227743_234237_5 super11 227743 234237
super11_227752_234257_5 super11 227752 234257
super11_227726_234237_5 super11 227726 234237




论坛徽章:
0
发表于 2018-05-02 16:17 |显示全部楼层
回复 7# 1cpuer

输进去之后没有变化,还是原先的两列

论坛徽章:
21
程序设计版块每日发帖之星
日期:2016-05-03 06:20:0015-16赛季CBA联赛之深圳
日期:2018-06-15 14:59:3715-16赛季CBA联赛之八一
日期:2018-07-03 16:56:4615-16赛季CBA联赛之八一
日期:2018-07-05 10:34:09黑曼巴
日期:2018-07-06 15:19:5015-16赛季CBA联赛之佛山
日期:2018-08-03 13:19:3315-16赛季CBA联赛之山西
日期:2018-08-07 19:46:2315-16赛季CBA联赛之广夏
日期:2018-08-08 19:31:5015-16赛季CBA联赛之青岛
日期:2018-11-26 15:21:5015-16赛季CBA联赛之青岛
日期:2018-06-08 13:45:2815-16赛季CBA联赛之同曦
日期:2018-06-04 19:42:2015-16赛季CBA联赛之山东
日期:2018-05-30 12:44:59
发表于 2018-05-03 15:02 |显示全部楼层
本帖最后由 wh7211 于 2018-05-04 11:14 编辑

回复 1# wd_my


  1. awk '{$2=gensub("_0.0_|_|_5$","\t","g",$2)}1' file
  2. sed -r 's/( +[^_]+)(_0\.0_|_)([^_]+)_([^_]+)_5$/\1\t\3\t\4\t/g' file
复制代码

论坛徽章:
6
程序设计版块每日发帖之星
日期:2016-05-11 06:20:00操作系统版块每日发帖之星
日期:2016-05-12 06:20:00每日论坛发贴之星
日期:2016-05-12 06:20:00操作系统版块每日发帖之星
日期:2016-05-14 06:20:00程序设计版块每日发帖之星
日期:2016-05-31 06:20:00每日论坛发贴之星
日期:2016-05-31 06:20:00
发表于 2018-05-04 01:19 |显示全部楼层
回复 8# wd_my

把打印为原题的 list
是测试的 sed -r 的那个吗?
# [ /home/soio/1bs/awks ] {2018-05-04 01:09:30}
: 1525367370:0;➜  sed -r 's/([ ][ ]*.*)(_0\.0_)/\1\t/g; s/([ ][ ]*.*)(_)(.*)(_5)/\1\t\3\t/g' x_5
scaffold5729_0.0_139982_147655_5        scaffold5729    139982    147655            
scaffold5755_0.0_39667_53398_5  scaffold5755    39667    53398   
scaffold5755_0.0_39657_53398_5  scaffold5755    39657    53398      
super11_227743_234237_5 super11_227743    234237   
super11_227752_234257_5 super11_227752    234257   
super11_227726_234237_5 super11_227726    234237   



# [ /home/soio/1bs/awks ] {2018-05-04 01:09:49}
: 1525367389:0;➜  sed 's/([ ][ ]*.*)(_0\.0_)/\1\t/g; s/([ ][ ]*.*)(_)(.*)(_5)/\1\t\3\t/g' x_5
sed: -e 表达式 #1, 字符 29: “s”命令的RHS非法引用\1↵


# [ /home/soio/1bs/awks ] {2018-05-04 01:09:59}
: 1525367399:0;➜  sed -r 's/(  *.*)(_0\.0_)/\1\t/g; s/([ ][ ]*.*)(_)(.*)(_5)/\1\t\3\t/g' x_5
scaffold5729_0.0_139982_147655_5        scaffold5729    139982    147655            
scaffold5755_0.0_39667_53398_5  scaffold5755    39667    53398   
scaffold5755_0.0_39657_53398_5  scaffold5755    39657    53398      
super11_227743_234237_5 super11_227743    234237   
super11_227752_234257_5 super11_227752    234257   
super11_227726_234237_5 super11_227726    234237   



# [ /home/soio/1bs/awks ] {2018-05-04 01:10:53}
: 1525367453:0;➜  sed -r 's/(\ \ *.*)(_0\.0_)/\1\t/g; s/([ ][ ]*.*)(_)(.*)(_5)/\1\t\3\t/g' x_5
scaffold5729_0.0_139982_147655_5        scaffold5729    139982    147655            
scaffold5755_0.0_39667_53398_5  scaffold5755    39667    53398   
scaffold5755_0.0_39657_53398_5  scaffold5755    39657    53398      
super11_227743_234237_5 super11_227743    234237   
super11_227752_234257_5 super11_227752    234257   
super11_227726_234237_5 super11_227726    234237   



# [ /home/soio/1bs/awks ] {2018-05-04 01:11:00}
: 1525367460:0;➜  sed -r 's/(\x20\x20*.*)(_0\.0_)/\1\t/g; s/([ ][ ]*.*)(_)(.*)(_5)/\1\t\3\t/g' x_5
scaffold5729_0.0_139982_147655_5        scaffold5729    139982    147655            
scaffold5755_0.0_39667_53398_5  scaffold5755    39667    53398   
scaffold5755_0.0_39657_53398_5  scaffold5755    39657    53398      
super11_227743_234237_5 super11_227743    234237   
super11_227752_234257_5 super11_227752    234257   
super11_227726_234237_5 super11_227726    234237   



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

本版积分规则 发表回复

数据风云,十年变迁
DTCC 第十届中国数据库技术大会已启航!

2019年5月8日~5月10日,由IT168旗下ITPUB企业社区平台主办的第十届中国数据库技术大会(DTCC2019),将在北京隆重召开。大会将邀请百余位行业专家,就热点技术话题进行分享,是广大数据领域从业人士的又一次年度盛会和交流平台。与SACC2018类似,本届大会将采用“3+2”模式:3天传统技术演讲+2天深度主题培训。大会不仅提供超100场的主题演讲,还会提供连续2天的深度课程培训,深化数据领域的项目落地实践方案。
DTCC2019,一场值得期待的数据技术盛会,殷切地希望您报名参与!

活动入口>>
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP