Chinaunix

标题: awk小问题 [打印本页]

作者: wp7731695    时间: 2014-01-14 12:38
标题: awk小问题
文本内容
a
b
c
想实现下面的输出(假设重复10次)
a
b
c
a2
b2
c2
a3
b3
c3
...
a10
b10
c10

请问用AWK怎样实现
作者: Shell_HAT    时间: 2014-01-14 12:45
  1. awk '{a[NR]=$0}END{for(i=1;i<=NR;i++)print a[i];for(j=2;j<=10;j++)for(i=1;i<=NR;i++)print a[i]j}' urfile
复制代码

作者: wp7731695    时间: 2014-01-14 12:48
回复 2# Shell_HAT


    非常感谢
作者: WilliBhamlll    时间: 2014-01-14 12:50
  1. awk -vRS= '{for(i=0;i++<10;){for(j=0;j++<NF;){print i==1?$j:$j""i}}}' file
复制代码

作者: 关阴月飞    时间: 2014-01-14 12:52
  1. awk '{a[NR]=$0}END{for(i=0;i++<10;)for(n=0;n++<NR;)print (i>1)?a[n]i:a[n]}'  urfile
复制代码

作者: Shell_HAT    时间: 2014-01-14 12:53
回复 4# WilliBhamlll


    遇到包含空格的行会处理错误
作者: WilliBhamlll    时间: 2014-01-14 12:59
回复 6# Shell_HAT


    是的,还是用数组好
作者: yestreenstars    时间: 2014-01-14 13:25
本帖最后由 yestreenstars 于 2014-01-14 13:30 编辑
  1. awk '{a[NR]=$0}END{for(i=0;i++<10;)for(j=0;j++<NR;)print (i>1)?a[j]i:a[j]}'
复制代码

作者: LikeLx    时间: 2014-01-14 15:23
本帖最后由 LikeLx 于 2014-01-14 15:24 编辑
  1. awk -vRS='' '{print $0;for(i=1;i++<10;){for(a=0;a++<NF;) print $a""i}}'
复制代码

作者: elu_ligao    时间: 2014-01-14 22:51
echo -e "a\nb\nc" | awk '{a[++i]=$0}END{for(i=1;i<=10;++i)for(j=1;j<=NR;++j)print i-1?a[j]i:a[j]}'
作者: reb00t    时间: 2014-01-14 22:54
  1. awk -vRS='' '{print $0;for(i=2;i<=10;i++)for(j=1;j<=NF;j++)print $j i}' 1.txt
复制代码
回复 9# LikeLx


    我也是这么写的~ 我去。
作者: LikeLx    时间: 2014-01-15 08:44
回复 11# reb00t
基情不言而喻了

   
作者: onion0610    时间: 2014-01-15 11:07
回复 8# yestreenstars


    (i>1)?a[j]i:a[j]能解释一下这块的用法么?谢谢
作者: yestreenstars    时间: 2014-01-15 11:14
回复 13# onion0610
判断i>1的真假,为真则打印a[j]i,否则打印a[j]。
   
作者: onion0610    时间: 2014-01-15 11:23
回复 14# yestreenstars


    又学习了,谢谢




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