免费注册 查看新帖 |

Chinaunix

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

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

论坛徽章:
0
跳转到指定楼层
1 [收藏(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
2 [报告]
发表于 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
3 [报告]
发表于 2018-04-30 23:25 |只看该作者

复制代码

论坛徽章:
0
4 [报告]
发表于 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
5 [报告]
发表于 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
6 [报告]
发表于 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
7 [报告]
发表于 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
8 [报告]
发表于 2018-05-02 16:17 |只看该作者
回复 7# 1cpuer

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

论坛徽章:
25
程序设计版块每日发帖之星
日期:2016-05-03 06:20:0015-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-12-11 09:45:3219周年集字徽章-年
日期:2020-04-18 23:54:5215-16赛季CBA联赛之深圳
日期:2020-04-19 21:40:19黑曼巴
日期:2022-04-03 17:55:1315-16赛季CBA联赛之八一
日期:2018-07-03 16:56:46
9 [报告]
发表于 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
10 [报告]
发表于 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   



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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP