免费注册 查看新帖 |

Chinaunix

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

[文本处理] 【求助】正则表达匹配替换 [复制链接]

论坛徽章:
0
发表于 2014-08-21 10:29 |显示全部楼层
想通过正则匹配查找到匹配的字符,然后将匹配对象拆分成2行, 例如:

CEU        19        59096950        T        C        111ASW        8        161222        G        C        101
ASW        8        146293414        C        T        116HCB        6        149609        G        A        116
TSI        16        90172696        A        G        119ASW        20        61795        G        T        111

期望得到的结果是:
CEU        19        59096950        T        C        111
ASW        8        161222        G        C        101
ASW        8        146293414        C        T        116
HCB        6        149609        G        A        116
TSI        16        90172696        A        G        119
ASW        20        61795        G        T        111

我自己用sed s'/[A-Z]*[0-9][A-Z]/[A-Z]*[0-9]\\n[A-Z]/' new old_file>new_file进行了拆分,但是得到的结果是错误的, 希望大侠能指点一二。 谢谢!

论坛徽章:
23
15-16赛季CBA联赛之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午马
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16赛季CBA联赛之山东
日期:2017-12-21 16:39:1915-16赛季CBA联赛之广东
日期:2016-01-19 13:33:372015亚冠之山东鲁能
日期:2015-10-13 09:39:062015亚冠之西悉尼流浪者
日期:2015-09-21 08:27:57
发表于 2014-08-21 10:33 |显示全部楼层
回复 1# tianzhizhengdao


try:
  1. sed 's/[0-9]\+/&\n/3' file
复制代码

论坛徽章:
0
发表于 2014-08-21 10:40 |显示全部楼层
谢谢!
稍微有点问题,行是分开了,但是遇到下面的情况
CEU        19        59096950        T        C        111ASW        8        161222        G        C        101
ASW        8        146293414        C        T        116
ASW        20        61795        G        T        111

第3行和第4行之后都会多出一行空行来,是我刚才没表述清楚,大侠再帮忙给稍微修改一下。
大些介意加下我QQ号(544874313吗?想请你帮我解释下细节。 谢谢!

论坛徽章:
9
寅虎
日期:2013-12-02 12:49:22巨蟹座
日期:2014-07-18 18:13:34卯兔
日期:2014-07-25 14:43:08子鼠
日期:2014-07-26 10:10:51酉鸡
日期:2014-07-31 15:09:562015亚冠之本尤德科
日期:2015-05-19 09:27:382015亚冠之卡尔希纳萨夫
日期:2015-06-20 10:30:212015亚冠之阿尔纳斯尔
日期:2015-07-01 20:46:062015亚冠之城南
日期:2015-07-15 21:12:00
发表于 2014-08-21 10:42 |显示全部楼层
  1. [code] sed -r 's/([0-9]{3})([A-Z]{3})/\1\n\2/' c.txt
复制代码
[/code]

论坛徽章:
0
发表于 2014-08-21 10:53 |显示全部楼层
太感谢了,这次的代码基本看懂了,试着执行了一下结果也没问题。 大侠要是不介意的话烦请加下我QQ号(544874313)或私信发一下您QQ我加了请教一下细节. 感激不尽!

论坛徽章:
9
寅虎
日期:2013-12-02 12:49:22巨蟹座
日期:2014-07-18 18:13:34卯兔
日期:2014-07-25 14:43:08子鼠
日期:2014-07-26 10:10:51酉鸡
日期:2014-07-31 15:09:562015亚冠之本尤德科
日期:2015-05-19 09:27:382015亚冠之卡尔希纳萨夫
日期:2015-06-20 10:30:212015亚冠之阿尔纳斯尔
日期:2015-07-01 20:46:062015亚冠之城南
日期:2015-07-15 21:12:00
发表于 2014-08-21 11:18 |显示全部楼层
有什么问题在这里问就好了,有人懂的话肯定会给你解答的,现在很多人都不太喜欢随便加QQ回复 5# tianzhizhengdao


   

论坛徽章:
30
申猴
日期:2014-04-10 09:43:532015年亚洲杯纪念徽章
日期:2015-03-20 14:40:232015亚冠之阿尔纳斯尔
日期:2015-06-02 18:59:042015亚冠之阿尔希拉尔
日期:2015-06-30 15:22:572015亚冠之大阪钢巴
日期:2015-07-20 10:44:332015亚冠之阿尔纳斯尔
日期:2015-10-28 14:57:5215-16赛季CBA联赛之新疆
日期:2015-12-25 10:18:45黑曼巴
日期:2016-06-26 21:39:5315-16赛季CBA联赛之山西
日期:2016-07-25 21:54:2715-16赛季CBA联赛之北京
日期:2016-10-27 12:07:2315-16赛季CBA联赛之八一
日期:2017-07-07 16:39:0915-16赛季CBA联赛之吉林
日期:2017-09-04 12:14:43
发表于 2014-08-21 12:49 |显示全部楼层
回复 1# tianzhizhengdao
awk '{a=substr($6,1,3);b=substr($6,4,6);$6=a"\n" b}1'

   

论坛徽章:
4
狮子座
日期:2014-04-17 10:45:47双鱼座
日期:2014-08-21 17:16:41处女座
日期:2014-08-26 13:46:46水瓶座
日期:2014-10-28 14:08:50
发表于 2014-08-21 23:27 |显示全部楼层
  1. sed -rn 's/([A-Z]{3}.*\s[0-9]{3})([A-Z]{3}.*)/\1\n\2/p'
复制代码

论坛徽章:
5
白羊座
日期:2014-10-28 11:23:27水瓶座
日期:2015-01-20 10:19:022015亚冠之柏斯波利斯
日期:2015-07-11 18:17:2015-16赛季CBA联赛之同曦
日期:2015-12-23 12:38:582016猴年福章徽章
日期:2016-02-18 15:30:34
发表于 2014-08-22 11:03 |显示全部楼层
  1. sed -r 's/\B[A-Z]{3}/\n&/'
复制代码

论坛徽章:
0
发表于 2014-08-28 02:03 |显示全部楼层
这几天没上来,现在发现还有几位朋友也帮忙了,一并致谢!虽然我最后采用了4 楼的回复, sed -r ‘s/([0-9])([A-Z]{3})/\1\n\2/’ , 还是很感谢大家!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP