Chinaunix

标题: sed分割文件 [打印本页]

作者: zhengwei_zw    时间: 2012-04-11 18:38
标题: sed分割文件
1232342
4242344
2342344
4234243
……

1万行


切割成5列,平均每列


谁有代码丢个
作者: 英语盲学linux    时间: 2012-04-11 18:54
本帖最后由 英语盲学linux 于 2012-04-11 18:54 编辑

xargs -n5

sed ':a;N;$!ba;s/\n/ /g;s/ /\n/5'
作者: zhengwei_zw    时间: 2012-04-11 18:59
合并多列 以空格分开呢?

楼上这个用不起呢
作者: zhengwei_zw    时间: 2012-04-11 19:00
我现在切割成50行的小文件了。
作者: hbmhalley    时间: 2012-04-11 19:11
  1. sed ':1;N;s/\n/&/4;$!T1;s/\n/ /g'
复制代码

作者: zhengwei_zw    时间: 2012-04-11 19:15
这个还是1列啊
作者: hbmhalley    时间: 2012-04-11 19:24
本帖最后由 hbmhalley 于 2012-04-11 19:54 编辑

回复 6# zhengwei_zw


User@Explorer-PC ~/work/2012
$ seq 19 | sed ':1;N;s/\n/&/4;$!T1;s/\n/ /g'
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19



你想要啥样的?
作者: zhengwei_zw    时间: 2012-04-11 20:02
seq是神码阿?
我再实下
作者: jiejie455    时间: 2012-04-11 20:16
本帖最后由 jiejie455 于 2012-04-11 20:32 编辑
  1. 猜一个:
  2. seq 2525 | awk '{a[NR]=$1}END{gap=int(NR/5);for(i=1;i<=gap;i++){for(j=0;j<5;j++){printf a[(i+j*gap)]"\t"};print ""};if(5*gap<NR){for(k=5*gap+1;k<=NR;k++){printf a[k]"\t"}}}'
复制代码

作者: winway1988    时间: 2012-04-11 23:06
  1. sed -r ':a;${s/\n/ /g;q};N;/(\n[^\n]*){4}/!ba;s/\n/ /g' urfile
复制代码
sed ':1;N;s/\n/&/4;$!T1;s/\n/ /g'
又学了个T
  1. awk 'cnt==5{print line;line="";cnt=0}{line=line?line OFS $0:$0;cnt++}END{print line}' urfile
复制代码

作者: yinyuemi    时间: 2012-04-11 23:15
  1. seq 20 |paste - - - - -
  2. 1       2       3       4       5
  3. 6       7       8       9       10
  4. 11      12      13      14      15
  5. 16      17      18      19      20
复制代码

作者: zhengwei_zw    时间: 2012-04-12 09:35
我这个文件不行,不晓得怎么的。
内容是13位的电话号码

  1. 18980744262
  2. 18981766352
  3. 18908194422
  4. 18908085557
  5. 18080926809
  6. 18980086262
  7. 13348818091
  8. 15351218607
  9. 18980077727
  10. 13388180283
  11. 18980658074
  12. 13308005055
  13. 13308005052
  14. 13350070393
  15. 18980022473
  16. 18980897961
  17. ……
复制代码

作者: blackold    时间: 2012-04-12 09:58
split




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2