免费注册 查看新帖 |

Chinaunix

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

文本行横竖转换  关闭 [复制链接]

论坛徽章:
0
发表于 2006-01-11 19:02 |显示全部楼层
请问如何用SED将:

1 2 3 4 5 6 7 8 9
A B C D E F G H I

变化为:
1 A
2 B
3 C
4 D
5 E
6 F
7 G
8 H
9 I
谢谢了..
请各位哥哥帮帮忙..

[ 本帖最后由 mocou 于 2006-1-13 09:40 编辑 ]

论坛徽章:
0
发表于 2006-01-11 19:51 |显示全部楼层
郁闷,发不了帖子。。。

^_^ 好像又可以了

holdspace不行么?第一行逐个放进去,第二行的时候逐个取出来?
sed还得跟美女多学习

[ 本帖最后由 大蚂蚁 于 2006-1-11 19:52 编辑 ]

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
发表于 2006-01-11 19:52 |显示全部楼层
原帖由 大蚂蚁 于 2006-1-11 19:51 发表
郁闷,发不了帖子。。。

郁闷,不会
把每一行放到数组里,然后对所有数组循环,应该可以

论坛徽章:
0
发表于 2006-01-11 19:57 |显示全部楼层

TO 大蚂蚁:
我试过了啊...可是不行.

TO 烈火:
呵呵,用AWK是可以的啦 ....不过我想用SED来办.

如果能变成:
1
A
2
B
3
C
...
也行萨.

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
发表于 2006-01-11 20:02 |显示全部楼层
原帖由 dbcat 于 2006-1-11 19:57 发表

TO 大蚂蚁:
我试过了啊...可是不行.

TO 烈火:
呵呵,用AWK是可以的啦 ....不过我想用SED来办[img]http://bbs.chinaunix.net/images/smilies/e ...

AWK我也不会

论坛徽章:
0
发表于 2006-01-11 20:05 |显示全部楼层
原帖由 寂寞烈火 于 2006-1-11 20:02 发表

AWK我也不会


请看:

http://bbs.chinaunix.net/viewthr ... p;highlight=admirer

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
发表于 2006-01-11 20:16 |显示全部楼层
原帖由 dbcat 于 2006-1-11 20:05 发表


请看:

http://bbs.chinaunix.net/viewthr ... p;highlight=admirer

这个我知道,我在考虑用别的方法 ~~

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
发表于 2006-01-12 03:33 |显示全部楼层
原帖由 dbcat 于 2006-1-11 19:57 发表

TO 大蚂蚁:
我试过了啊...可是不行.

TO 烈火:
呵呵,用AWK是可以的啦 ....不过我想用SED来办[img]http://bbs.chinaunix.net/images/smilies/e ...

用shell来解决,如何?
/home/lee#cat file
1 2 3 4 5 6 7 8 9 0
A B C D E F G H I J
2 3 4 5 6 7 8 9 0 1
B C D E F G H I J K
3 4 5 6 7 8 9 0 1 2
C D E F G H I J K L

  1. /home/lee#cat _test
  2. #!/bin/ksh
  3. #假定固定文件是10个域
  4. n=1
  5. while read line;do
  6.         set -A array$n $line
  7.         ((n++))
  8. done<file
  9. varlist=$(
  10. for j in $(typeset);do
  11.         [[ $j == array[0-9] ]] && echo \${$j[\$m]}
  12.         done
  13. )
  14. m=0
  15. while((m<=10));do
  16.         eval echo $varlist
  17.         ((m++))
  18. done
复制代码
result
/home/lee#_test
1 A 2 B 3 C
2 B 3 C 4 D
3 C 4 D 5 E
4 D 5 E 6 F
5 E 6 F 7 G
6 F 7 G 8 H
7 G 8 H 9 I
8 H 9 I 0 J
9 I 0 J 1 K
0 J 1 K 2 L

论坛徽章:
0
发表于 2006-01-12 08:07 |显示全部楼层
# cat 1

  1. 1 2 3 4 5 6 7 8 9
  2. A B C D E F G H I
  3. 1 2 3 4 5 6 7 8 9
  4. a b c d e f g h i
  5. 1 2 3 4 5 6 7 8 9
  6. A B C D E F G H I
复制代码


# cat a

  1. :a
  2. H;ta
  3. $ {
  4. x
  5. s/\n/ @/g
  6. s/$/ /
  7. s/ //
  8. x
  9. :b
  10. g
  11. s/ [^@]*$//
  12. s/ [^@]*@/ /g
  13. s/@//
  14. p
  15. g
  16. s/@../@/g
  17. h
  18. /@@/!tb
  19. }
复制代码


# sed -n -f a 1


  1. 1 A 1 a 1 A
  2. 2 B 2 b 2 B
  3. 3 C 3 c 3 C
  4. 4 D 4 d 4 D
  5. 5 E 5 e 5 E
  6. 6 F 6 f 6 F
  7. 7 G 7 g 7 G
  8. 8 H 8 h 8 H
  9. 9 I 9 i 9 I
复制代码

评分

参与人数 1可用积分 +1 收起 理由
waker + 1

查看全部评分

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
发表于 2006-01-12 09:12 |显示全部楼层
与tainblue思路基本一样,不过是一个个字符为单位的

  1. [waker@proxy d1]$ cat file
  2. 123456
  3. abc
  4. ABCDE
  5. hijk
  6. lmnopqrstuvw
复制代码

  1. [waker@proxy d1]$ sed -n 'H;${:a;
  2. g;
  3. s/\n[^\n]/\n/g;
  4. :b;
  5. /[^\n]/s/\n\n/\n \n/g;tb;
  6. x;
  7. s/\n\+\([^\n]\)[^\n]*/\1/gp;ta}' file
复制代码


结果

  1. 1aAhl
  2. 2bBim
  3. 3cCjn
  4. 4 Dko
  5. 5 E p
  6. 6   q
  7.     r
  8.     s
  9.     t
  10.     u
  11.     v
  12.     w
复制代码


当然部分不支持\n的用户不能通过
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP