抓取文本, 寻求支持
发表于 : 2009-09-04 20:26
从一个文本文档里面抓取我要的东西:
手动操作是:
vi test.log
翻到最后, 向上查找"Input" (也就是查找全文的最后一个 Input 关键词)
从Input往下数5行,开始抓取;
知道遇到一行全是连续的“
-------(英文模式)
具体的要抓取的部分如下:
65775 Input orientation:
65776 ---------------------------------------------------------------------
65777 Center Atomic Atomic Coordinates (Angstroms)
65778 Number Number Type X Y Z
65779 ---------------------------------------------------------------------
65780 1 78 0 0.000000 0.000000 0.000000
65781 2 7 0 1.958104 -0.742371 0.000000
65782 3 6 0 2.937967 0.226819 0.000000
65783 4 6 0 2.310061 -2.033209 0.000000
65784 5 6 0 4.296722 -0.117260 0.000000
65785 6 6 0 3.656131 -2.429088 0.000000
65786 7 1 0 1.501025 -2.756568 0.000000
65787 8 6 0 4.660240 -1.462620 0.000000
65788 9 1 0 5.046413 0.666470 0.000000
65789 10 1 0 3.890618 -3.488131 0.000000
65790 11 1 0 5.707348 -1.748232 0.000000
65791 12 7 0 -1.958104 0.742371 0.000000
65792 13 6 0 -2.937967 -0.226819 0.000000
65793 14 6 0 -2.310061 2.033209 0.000000
65794 15 6 0 -4.296722 0.117260 0.000000
65795 16 6 0 -3.656131 2.429088 0.000000
65796 17 1 0 -1.501025 2.756568 0.000000
65797 18 6 0 -4.660240 1.462620 0.000000
65798 19 1 0 -5.046413 -0.666470 0.000000
65799 20 1 0 -3.890618 3.488131 0.000000
65800 21 1 0 -5.707348 1.748232 0.000000
65801 22 7 0 1.007661 1.685953 0.000000
65802 23 6 0 2.443290 1.566302 0.000000
65803 24 6 0 1.812978 3.669152 0.000000
65804 25 6 0 2.953047 2.847057 0.000000
65805 26 1 0 1.758903 4.750634 0.000000
65806 27 1 0 3.984815 3.167627 0.000000
65807 28 7 0 -1.007661 -1.685953 0.000000
65808 29 6 0 -2.443290 -1.566302 0.000000
65809 30 6 0 -1.812978 -3.669152 0.000000
65810 31 6 0 -2.953047 -2.847057 0.000000
65811 32 1 0 -1.758903 -4.750634 0.000000
65812 33 1 0 -3.984815 -3.167627 0.000000
65813 34 7 0 0.651375 2.935013 0.000000
65814 35 7 0 -0.651375 -2.935013 0.000000
65815 ---------------------------------------------------------------------
很规则,每个文档中的
-------------
长短都是一样的,
而且Input下没的,肯定是一行
-------------------------
然后两行字符
再是一行
------------------------------
如果依照------------------来区分,
就是抓取Input下面的
第二个--------------------和第三个-----------------之间的行。
比如上面的文档,要抓取的是
65780 到65814 行。
而且对于每一行,需要截取15-70列
也就是cut -c15-70
由于文档很多。当放在一个目录下:
文件名字都是*.log
我希望这个脚本能做到
command *.log
给出的操作结果是:
*_Fianl_Geom.txt
目前我只会手动操作, 不能自动。
希望大侠指点一下子....
手动操作是:
vi test.log
翻到最后, 向上查找"Input" (也就是查找全文的最后一个 Input 关键词)
从Input往下数5行,开始抓取;
知道遇到一行全是连续的“
-------(英文模式)
具体的要抓取的部分如下:
65775 Input orientation:
65776 ---------------------------------------------------------------------
65777 Center Atomic Atomic Coordinates (Angstroms)
65778 Number Number Type X Y Z
65779 ---------------------------------------------------------------------
65780 1 78 0 0.000000 0.000000 0.000000
65781 2 7 0 1.958104 -0.742371 0.000000
65782 3 6 0 2.937967 0.226819 0.000000
65783 4 6 0 2.310061 -2.033209 0.000000
65784 5 6 0 4.296722 -0.117260 0.000000
65785 6 6 0 3.656131 -2.429088 0.000000
65786 7 1 0 1.501025 -2.756568 0.000000
65787 8 6 0 4.660240 -1.462620 0.000000
65788 9 1 0 5.046413 0.666470 0.000000
65789 10 1 0 3.890618 -3.488131 0.000000
65790 11 1 0 5.707348 -1.748232 0.000000
65791 12 7 0 -1.958104 0.742371 0.000000
65792 13 6 0 -2.937967 -0.226819 0.000000
65793 14 6 0 -2.310061 2.033209 0.000000
65794 15 6 0 -4.296722 0.117260 0.000000
65795 16 6 0 -3.656131 2.429088 0.000000
65796 17 1 0 -1.501025 2.756568 0.000000
65797 18 6 0 -4.660240 1.462620 0.000000
65798 19 1 0 -5.046413 -0.666470 0.000000
65799 20 1 0 -3.890618 3.488131 0.000000
65800 21 1 0 -5.707348 1.748232 0.000000
65801 22 7 0 1.007661 1.685953 0.000000
65802 23 6 0 2.443290 1.566302 0.000000
65803 24 6 0 1.812978 3.669152 0.000000
65804 25 6 0 2.953047 2.847057 0.000000
65805 26 1 0 1.758903 4.750634 0.000000
65806 27 1 0 3.984815 3.167627 0.000000
65807 28 7 0 -1.007661 -1.685953 0.000000
65808 29 6 0 -2.443290 -1.566302 0.000000
65809 30 6 0 -1.812978 -3.669152 0.000000
65810 31 6 0 -2.953047 -2.847057 0.000000
65811 32 1 0 -1.758903 -4.750634 0.000000
65812 33 1 0 -3.984815 -3.167627 0.000000
65813 34 7 0 0.651375 2.935013 0.000000
65814 35 7 0 -0.651375 -2.935013 0.000000
65815 ---------------------------------------------------------------------
很规则,每个文档中的
-------------
长短都是一样的,
而且Input下没的,肯定是一行
-------------------------
然后两行字符
再是一行
------------------------------
如果依照------------------来区分,
就是抓取Input下面的
第二个--------------------和第三个-----------------之间的行。
比如上面的文档,要抓取的是
65780 到65814 行。
而且对于每一行,需要截取15-70列
也就是cut -c15-70
由于文档很多。当放在一个目录下:
文件名字都是*.log
我希望这个脚本能做到
command *.log
给出的操作结果是:
*_Fianl_Geom.txt
目前我只会手动操作, 不能自动。
希望大侠指点一下子....