免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: 渣渣鸟
打印 上一主题 下一主题

如何把多行并作一行 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2010-05-21 15:50 |只看该作者
2楼的不对
测试了。
输出结果是
ab。cde。fghij。kl。

黑哥的是对的。
awk '$1=$1' RS=。 ORS=。\\n  urfile

不过不明白这里 $1=$1意义何在?

论坛徽章:
0
12 [报告]
发表于 2010-05-21 15:56 |只看该作者
我试了一下,awk没有一个可以的,奇怪,

论坛徽章:
0
13 [报告]
发表于 2010-05-21 16:05 |只看该作者
回复 5# blackold


   sed的好高深,可以不可以解释一下......

论坛徽章:
16
IT运维版块每日发帖之星
日期:2015-08-24 06:20:00综合交流区版块每日发帖之星
日期:2015-10-14 06:20:00IT运维版块每日发帖之星
日期:2015-10-25 06:20:00IT运维版块每日发帖之星
日期:2015-11-06 06:20:00IT运维版块每日发帖之星
日期:2015-12-10 06:20:00平安夜徽章
日期:2015-12-26 00:06:302016猴年福章徽章
日期:2016-02-18 15:30:34IT运维版块每日发帖之星
日期:2016-04-15 06:20:00IT运维版块每日发帖之星
日期:2016-05-21 06:20:00综合交流区版块每日发帖之星
日期:2016-08-16 06:20:002015七夕节徽章
日期:2015-08-21 11:06:17IT运维版块每日发帖之星
日期:2015-08-14 06:20:00
14 [报告]
发表于 2010-05-21 16:13 |只看该作者
本帖最后由 expert1 于 2010-05-21 16:21 编辑
  1. awk 'BEGIN{RS="。" } {print $1,$2,$3,$4,$5}'
  2. a b   
  3. c d e  
  4. f g h i j
  5. k l   
复制代码
行列互换很简单,无非是调awk的FS,ORS,OFS,RS这四个。

论坛徽章:
0
15 [报告]
发表于 2010-05-21 16:19 |只看该作者
回复 11# linfengfeiye


    使RS ORS生效。。。。

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
16 [报告]
发表于 2010-05-21 16:23 |只看该作者

  1. sed ':a;/。/!N;s/\n/ /g;ta' urfile
复制代码

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
17 [报告]
发表于 2010-05-21 16:30 |只看该作者
回复 11# linfengfeiye


2楼的稍微修改一下就行了
  1. awk '{printf $0" "}/。/{print ""}' urfile
复制代码

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
18 [报告]
发表于 2010-05-21 16:32 |只看该作者
回复 14# expert1


如果连续几百行不出现句号,你这个方法咋修改?

论坛徽章:
16
IT运维版块每日发帖之星
日期:2015-08-24 06:20:00综合交流区版块每日发帖之星
日期:2015-10-14 06:20:00IT运维版块每日发帖之星
日期:2015-10-25 06:20:00IT运维版块每日发帖之星
日期:2015-11-06 06:20:00IT运维版块每日发帖之星
日期:2015-12-10 06:20:00平安夜徽章
日期:2015-12-26 00:06:302016猴年福章徽章
日期:2016-02-18 15:30:34IT运维版块每日发帖之星
日期:2016-04-15 06:20:00IT运维版块每日发帖之星
日期:2016-05-21 06:20:00综合交流区版块每日发帖之星
日期:2016-08-16 06:20:002015七夕节徽章
日期:2015-08-21 11:06:17IT运维版块每日发帖之星
日期:2015-08-14 06:20:00
19 [报告]
发表于 2010-05-21 17:12 |只看该作者
回复 18# Shell_HAT


    呵呵,针对楼主的这个没问题,但是如果要更加通用点,也很简单。for循环吧。还是调这4个。
  1. :~/test# xargs <ri|awk 'BEGIN{FS="。";OFS="\n"}{for(i=1;i<NF;i++)print $i"。"}'
  2. a b。
  3. c d e。
  4. f g h i j。
  5. k l。
复制代码
有1000000也没关系这次。

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
20 [报告]
发表于 2010-05-21 17:13 |只看该作者
回复 13# linfengfeiye


    就是不停地读入下一行,直到。才输出。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP