免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 1978 | 回复: 10

[文本处理] 读取多行合并成一行,遇空行换行 [复制链接]

论坛徽章:
0
发表于 2018-07-24 16:24 |显示全部楼层
例子:

test1
test2
test3
test4
test5

test10
test20
test30
test40
test50

结果:

[root@zhuojx-test-01 ~]# awk  '{if($0!="")printf("%s ",$0);else print}' t.txt
test1 test2 test3 test4 test5
test10 test20 test30 test40 test50

小日志是达到效果


但是大大日志中,
遇到如:

      test1
test2
test3

这个的数据好像 判断空行就有问题,或是说行多的时候也会有问题。
所以救教有没其它好的方法,
或是 是不是用数组来操作更好?



论坛徽章:
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-07-24 17:25 |显示全部楼层
  1. [root@test65 ~]# cat file
  2.    test1
  3. test2
  4. test3
  5. test4
  6. test5

  7. test10
  8. test20
  9. test30
  10. test40
  11. test50
复制代码

  1. awk  '{if($0!~/^$/){sub(" +","");printf("%s ",$0)}else{print ""}}' file
  2. test1 test2 test3 test4 test5
  3. test10 test20 test30 test40 test50
复制代码


是不是这意思啊?原谅我看的不是很明白

论坛徽章:
0
发表于 2018-07-24 17:28 |显示全部楼层
  1. $a=Get-Content d:\abc.txt
  2. $a
  3. $b=$null
  4. for ($i=0;$i -lt $a.Length;$i++)
  5. {
  6.   if ($a[$i].length -eq "0")
  7.   {$b="$b`n"}
  8.   else
  9.   {$b=$b+($a[$i] -replace "\s")}

  10. }
  11. $b
复制代码


感谢群友天闲 分享的powershell代码。win,linux 通用。

论坛徽章:
0
发表于 2018-07-24 18:21 |显示全部楼层
回复 2# christmas1102

结果没有错,

我后面发现问题了,是windows生成的日志,不是单纯的空行,有看不到的东西 导致我判空行失败。
真是气死人,不知道有什么办法清理这种看不见的东西?

论坛徽章:
0
发表于 2018-07-24 18:22 |显示全部楼层
回复 3# 本友会机友会摄友会

$a=Get-Content d:\abc.txt

是什么意思?

论坛徽章:
0
发表于 2018-07-24 18:28 |显示全部楼层
有没有人能赐我一个用数组实现的,感觉用数组来处理 容得下大数据

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
发表于 2018-07-24 20:18 |显示全部楼层
回复 1# txnet

  1. echo 'test1
  2. test2
  3. test3
  4. test4
  5. test5

  6. test10
  7. test20
  8.    test30
  9. test40
  10. test50' |awk -vRS='\n\n' -F'[\n ]+' '$1=$1'
  11. test1 test2 test3 test4 test5
  12. test10 test20 test30 test40 test50
复制代码

论坛徽章:
60
20周年集字徽章-20	
日期:2020-10-28 14:04:3015-16赛季CBA联赛之北京
日期:2016-07-06 15:42:0715-16赛季CBA联赛之同曦
日期:2016-06-12 10:38:0915-16赛季CBA联赛之佛山
日期:2016-05-27 11:54:56黄金圣斗士
日期:2015-12-02 11:44:35白银圣斗士
日期:2015-11-25 14:32:43白银圣斗士
日期:2015-11-23 12:53:352015亚冠之布里斯班狮吼
日期:2015-10-21 16:55:482015亚冠之首尔
日期:2015-09-01 16:46:052015亚冠之德黑兰石油
日期:2015-08-31 11:39:192015亚冠之萨济拖拉机
日期:2015-08-28 21:06:5315-16赛季CBA联赛之广东
日期:2016-07-12 14:58:53
发表于 2018-07-24 23:09 |显示全部楼层
  1. awk -vRS='' '$1=$1'
复制代码

论坛徽章:
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
发表于 2018-07-25 08:59 |显示全部楼层
回复 4# txnet


  1. dos2unix 1.txt
复制代码

用这个命令把文本格式从Windows转换成Linux

论坛徽章:
0
发表于 2018-07-25 11:22 |显示全部楼层
$a=Get-Content d:\abc.txt ===========$a=cat d:\abc.txt
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP