免费注册 查看新帖 |

Chinaunix

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

非常着急,请教怎么从一个文件里面批量提取里面的坐标 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-05-22 20:14 |只看该作者 |倒序浏览
晚上好!我有一个文件里面有很多形式很类似的坐标,形似如下:
                       Standard orientation:                        
---------------------------------------------------------------------
Center     Atomic     Atomic              Coordinates (Angstroms)
Number     Number      Type              X           Y           Z
---------------------------------------------------------------------
    1          6             0        1.945477    0.858466    0.089902
    2        66             0        0.490002   -0.115768   -0.054711
    3          6             0       -1.197777   -0.096690    0.735495
    4          8             0       -3.699185    0.288008   -0.214964
    5          7             0       -2.615354    0.131372   -0.118704
---------------------------------------------------------------------
基本都是上面这种形式,不一样的只是X,Y,Z的数值,我想提取里面的这个:

  6            0        1.945477    0.858466    0.089902
66            0        0.490002   -0.115768   -0.054711
  6            0       -1.197777   -0.096690    0.735495
  8            0       -3.699185    0.288008   -0.214964
  7            0       -2.615354    0.131372   -0.118704
然后输出到一个单独的记事本文件,一个坐标对应一个记事本,而且记事本文件名按照次序1,2,3..这个排列。不知道能否把里面的坐标批量输出到一个一个的记事本? 非常地感谢您。

论坛徽章:
0
2 [报告]
发表于 2011-05-22 20:36 |只看该作者
是这个意思吗?
  1. xiabao@6P9SN2X ~/test/tmp
  2. $ awk '$1~/[0-9]/{print $2,$3,$4,$5 > $1}' urfile

  3. xiabao@6P9SN2X ~/test/tmp
  4. $ cat {1..5}
  5. 6 0 1.945477 0.858466
  6. 66 0 0.490002 -0.115768
  7. 6 0 -1.197777 -0.096690
  8. 8 0 -3.699185 0.288008
  9. 7 0 -2.615354 0.131372
复制代码

论坛徽章:
0
3 [报告]
发表于 2011-05-22 20:44 |只看该作者
回复 2# xiaopan3322


    非常非常地感谢您!我想要的是这样的:
  6            0        1.945477    0.858466    0.089902
66            0        0.490002   -0.115768   -0.054711
  6            0       -1.197777   -0.096690    0.735495
  8            0       -3.699185    0.288008   -0.214964
  7            0       -2.615354    0.131372   -0.118704

您的是:
  6            0        1.945477    0.858466   
66            0        0.490002   -0.115768   
  6            0       -1.197777   -0.096690   
  8            0       -3.699185    0.288008  
  7            0       -2.615354    0.131372   
少了最后的一列,可以给加上吗?还有我里面有很多的这样的坐标,可以把每个坐标批处理到每一个记事本吗?序号按照1,2,3...这样的顺序

论坛徽章:
0
4 [报告]
发表于 2011-05-22 20:54 |只看该作者
回复 3# wcszbd2008


    漏了一列,呵呵:
  1. awk '$1~/[0-9]/{print $2,$3,$4,$5,$6 > $1}' urfile
复制代码
已经输出了……

论坛徽章:
0
5 [报告]
发表于 2011-05-22 21:09 |只看该作者
回复 4# xiaopan3322


    不好意思,我还是不会输入,我输入如下:
  [jh2@5 test]$ awk '$1~/[0-9]/{print $2,$3,$4,$5,$6 > $1}' *.out
awk: cmd. line:1: (FILENAME=ts23-r-2.out FNR=8 fatal: can't redirect to `1/6=600,10=5,14=-1,18=40,22=2,26=3,29=120002,38=1,39=3,42=300/1,15;' (No such file or directory)
出现上面的情况...不知道怎么回事,也没有办法把很多个坐标一个一个都放到记事本里面去啊,谢谢您

论坛徽章:
0
6 [报告]
发表于 2011-05-22 21:18 |只看该作者
回复 4# xiaopan3322


    非常感谢您!因为每次都会出现Standard orientation,能不能先搜索Standard orientation,然后读取下面的第五行到第九行,然后删除每行前面14个字符,最后得到我想要的那部分啊?然后把提取的坐标一个一个输入到每个记事本,名称一次是1,2,3...,这样可以实现吗?万分感谢您

论坛徽章:
0
7 [报告]
发表于 2011-05-22 21:29 |只看该作者
回复 5# wcszbd2008


    你不是说你有一个文件吗?这里为什么是*.out?
    到底有多少个.out文件?.out文件的内容是不是你贴出来的那样子的?

论坛徽章:
0
8 [报告]
发表于 2011-05-22 21:37 |只看该作者
回复 7# xiaopan3322


    你好!我的就是一个文件,名字随便啦,就当是XX.out,没有两个,里面会出现很多次类似我贴出来的坐标的,X,Y,X列的数值不一样,其他的都是一样的,想要输出的也就是我前面说的那部分,希望能批量把坐标一个一个按数序输入到记事本,并且一次命名为1,2,3...知道有没有数清楚,非常感谢您

论坛徽章:
0
9 [报告]
发表于 2011-05-22 21:50 |只看该作者
本帖最后由 xiaopan3322 于 2011-05-22 21:51 编辑

回复 8# wcszbd2008

哎……郁闷……

1. 你有一个XX.out文件,内容如下(因为你没贴全,姑且算是我猜的):
xiabao@6P9SN2X ~/test/tmp
$ cat XX.out
                       Standard orientation:
---------------------------------------------------------------------
Center     Atomic     Atomic              Coordinates (Angstroms)
Number     Number      Type              X           Y           Z
---------------------------------------------------------------------
    1          6             0        1.945477    0.858466    0.089902
    2        66             0        0.490002   -0.115768   -0.054711
    3          6             0       -1.197777   -0.096690    0.735495
    4          8             0       -3.699185    0.288008   -0.214964
    5          7             0       -2.615354    0.131372   -0.118704
---------------------------------------------------------------------
                       Standard orientation:
---------------------------------------------------------------------
Center     Atomic     Atomic              Coordinates (Angstroms)
Number     Number      Type              X           Y           Z
---------------------------------------------------------------------
    3          1             0        1.945477    0.858466    0.089902
    4        76             0        0.490002   -0.115768   -0.054711
    5          2             0       -1.197777   -0.096690    0.735495
    6          3             0       -3.699185    0.288008   -0.214964
    7          4             0       -2.615354    0.131372   -0.118704
---------------------------------------------------------------------


2. 你想把坐标(也就是后面5列)分别输出到以Center Number为序号的文件中(在这里就是1,2,3,4,5,6,7)

3. 运行如下代码:
  1. awk '$1~/[0-9]/{print $2,$3,$4,$5,$6 >> $1}' XX.out
复制代码
4. 得到如下文件:
  1. $ ls
  2. 1  2  3  4  5  6  7  XX.out
复制代码
5. 查看文件1,2,3,4,5,6,7:
  1. xiabao@6P9SN2X ~/test/tmp
  2. $ cat 1
  3. 6 0 1.945477 0.858466 0.089902

  4. xiabao@6P9SN2X ~/test/tmp
  5. $ cat 2
  6. 66 0 0.490002 -0.115768 -0.054711

  7. xiabao@6P9SN2X ~/test/tmp
  8. $ cat 3
  9. 6 0 -1.197777 -0.096690 0.735495
  10. 1 0 1.945477 0.858466 0.089902

  11. xiabao@6P9SN2X ~/test/tmp
  12. $ cat 4
  13. 8 0 -3.699185 0.288008 -0.214964
  14. 76 0 0.490002 -0.115768 -0.054711

  15. xiabao@6P9SN2X ~/test/tmp
  16. $ cat 5
  17. 7 0 -2.615354 0.131372 -0.118704
  18. 2 0 -1.197777 -0.096690 0.735495

  19. xiabao@6P9SN2X ~/test/tmp
  20. $ cat 6
  21. 3 0 -3.699185 0.288008 -0.214964

  22. xiabao@6P9SN2X ~/test/tmp
  23. $ cat 7
  24. 4 0 -2.615354 0.131372 -0.118704
复制代码
我不知道你还有哪里不明白???!!!

论坛徽章:
0
10 [报告]
发表于 2011-05-22 21:58 |只看该作者
回复 9# xiaopan3322


    不好意思如此麻烦您,真很感谢您无私的帮助。您误解我的意思了,我是想得到这样的文件:
    比如说1.txt内容是:
      6            0        1.945596    0.858418    0.089073
   76             0        0.490039   -0.115858   -0.054479
     6             0       -1.200819   -0.095409    0.734258
     8             0       -3.697750    0.287749   -0.216181
     8             0       -2.613863    0.131225   -0.117721
       2.txt也是类似的一个完整的坐标,而不是一行或者一列,还有能不能直接先生成300个txt啊,我有很多坐标,因此比较多的文件,一个一个打那数字很麻烦,谢谢您
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP