免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2268 | 回复: 7
打印 上一主题 下一主题

如何用awk和sed 实现随机访问第n行第n列! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-12-30 16:24 |只看该作者 |倒序浏览
我想遍例一个表数据,可是不知道怎么去做,
我现在用这个办法做,可以取到行数据

#!/usr/bin/sh
#first
t=9
if [ -f /tmp/te ]
then
    sed -n `echo $t`p te | awk '{print $9}'
fi

这样能够显示第t行的九列,可是总感觉不是很好,还有就是不能找到第几列.

大家给个思路

论坛徽章:
0
2 [报告]
发表于 2004-12-30 16:28 |只看该作者

如何用awk和sed 实现随机访问第n行第n列!

知道怎么做了
在shell 13 问中找到答案了!

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
3 [报告]
发表于 2004-12-30 16:28 |只看该作者

如何用awk和sed 实现随机访问第n行第n列!

awk 'NR=='"$n"'{print $'"$m"'}' file
#n为行,m为列

论坛徽章:
0
4 [报告]
发表于 2004-12-30 16:38 |只看该作者

如何用awk和sed 实现随机访问第n行第n列!

谢谢 寂寞烈火      
你的办法真的很好啊!我还是好好看书吧,我记得我见过'NR=='这个变量不过用时就忘记了!

谢谢

论坛徽章:
0
5 [报告]
发表于 2005-01-01 03:56 |只看该作者

如何用awk和sed 实现随机访问第n行第n列!



侠客你好厉害哟,我也有一个问题就是:想随机取一个文件的具体一列和一行,

并想把它按照顺序排列。搞了几天也没搞定,你赠教一把吧! 谢了!

还有问一下你那个[ ]里具体是什么内容?是这个数据文件的路径还是别的?可以

解释一下吗?

论坛徽章:
0
6 [报告]
发表于 2005-01-01 13:37 |只看该作者

如何用awk和sed 实现随机访问第n行第n列!

原帖由 "Helen_0702" 发表:
我也有一个问题就是:想随机取一个文件的具体一列和一行,

并想把它按照顺序排列。


要对结果排序可自行加个通道转到sort处理

  1. awk '
  2. {
  3.         if ( NR == 1 ) xnum=NF
  4.         if ( NR != 1 ) {
  5.                 if ( NF < xnum ) xnum=NF
  6.         }

  7.         for (i=1;i<=NF;i++) array[NR,i]=$i
  8.         next

  9. }
  10. END{
  11.         srand()
  12.         while ( 1 == 1 ) {
  13.                 x=int(rand()*xnum)+1
  14.                 y=int(rand()*NR)+1
  15.                 printf ( "x=%2d,y=%2d\t%3s\n",x,y,array[x,y] )
  16.         }
  17. }' $1
复制代码


TEST
  1. [root@bbhome test]# cat file
  2. 1  2  3  4  5  6  7  8  9 10
  3. 11 12 13 14 15 16 17 18 19 20
  4. 21 22 23 24 25 26 27 28 29 30
  5. 31 32 33 34 35 36 37 38 39 40
  6. 41 42 43 44 45 46 47 48 49 50
  7. 51 52 53 54 55 56 57 58 59 60
  8. 61 62 63 64 65 66 67 68 69 70
  9. 71 72 73 74 75 76 77 78 79 80
  10. 81 82 83 84 85 86 87 88 89 90
  11. 91 92 93 94 95 96 97 98 99 100
  12. [root@bbhome test]# temp2 file
  13. x= 6,y= 7        57
  14. x= 2,y= 7        17
  15. x= 1,y= 6         6
  16. x= 4,y=10        40
  17. x= 1,y= 1         1
  18. x= 1,y= 6         6
  19. x= 4,y=10        40
  20. x=10,y= 2        92
  21. x= 7,y= 2        62
  22. x= 2,y= 2        12
  23. x= 4,y= 9        39
  24. x=10,y= 8        98
  25. x= 8,y= 2        72
  26. ...................
复制代码




矩阵文件生成代码
  1. [root@bbhome test]# cat temp
  2. awk '
  3. BEGIN{
  4. for (i=1;i<=100;i++) {
  5.         printf ("%2d ",i)
  6.         if ( i%10 == 0 ) printf("\n")
  7. }
  8. }'
复制代码

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
7 [报告]
发表于 2005-01-01 14:09 |只看该作者

如何用awk和sed 实现随机访问第n行第n列!

这样可以吗?

  1. maxcol=$(awk '{print NF|"sort -nr|head -n1"}' file)
  2. maxline=$(awk 'END{print NR}' file)
  3. m=$((RANDOM%maxcol))
  4. n=$((RANDOM%maxline))
  5. echo $n" line " $m" colum is:"
  6. awk 'NR=='"$n"'{print $'"$m"'}' file
复制代码

论坛徽章:
0
8 [报告]
发表于 2005-01-04 14:11 |只看该作者

如何用awk和sed 实现随机访问第n行第n列!

to Helen_0702    我的哪个[] 里面是一个文件的路径名


谢谢大家的关照
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP