|
我编写了一个sh脚本提取计算结果中某些行、某些列的数据。以前用此脚本算都是正常的,现在算新的体系出现了问题。具体问题是:如果一个结果文件中应该提取121行数据,在用脚本提取后,行数减少了,也就是说有些行的数据没有被一起提出来。
需要提取的数据原样如下:
121
1 -46.402
2 -1.670
3 -14.803
4 -81.984
5 -123.781
6 -2.014
7 -1.974
8 -0.227
9 0.898
10 -0.474
11 5.187
12 -137.736
13 -3.375
14 -69.712
15 -14.886
16 -29.161
17 -31.966
18 -26.630
19 -41.166
20 -10.523
21 -0.022
22 -9.898
23 -25.691
24 2.415
25 -0.810
26 28.456
27 15.554
28 -10.792
29 -16.917
30 -6.108
31 -18.047
32 -14.392
33 -9.124
34 -11.182
35 -21.516
36 -42.277
37 -56.818
38 -22.097
39 -13.954
40 11.128
41 -4.202
42 -2.364
43 -6.104
44 -3.093
45 -1.789
46 -2.697
47 -2.161
48 -10.059
49 -23.488
50 -45.157
51 -22.211
52 -25.632
53 -33.445
54 -13.480
55 -10.918
56 -14.527
57 -84.508
58 -28.976
59 -25.749
60 104.442
61 0.109
62 -1.024
63 -1.171
64 -2.713
65 -24.719
66 -33.393
67 -36.172
68 -26.182
69 -12.897
70 -17.210
71 -23.623
72 -15.788
73 -38.116
74 -1.112
75 -0.428
76 -1.078
77 -2.719
78 -1.131
79 -4.262
80 -29.430
81 -47.441
82 -1.668
83 -0.643
84 -1.375
85 -0.165
86 -2.333
87 -1.609
88 -12.820
89 -7.455
90 -8.461
91 9.343
92 -28.287
93 -23.651
94 -24.727
95 -2.037
96 -6.075
97 0.410
98 -18.987
99 -46.711
100 -25.867
101 -40.888
102 -33.595
103 -25.011
104 -13.526
105 -45.274
106 -34.306
107 -27.879
108 -2.677
109 -1.403
110 0.966
111 0.134
112 0.261
113 34.627
114 -4.172
115 -14.935
116 -14.605
117 -30.374
118 -111.839
119 -10.304
120 0.090
121 -2790.460
采用两个脚本,第一个脚本提取数值前面的序号数,也就是1-121,如脚本exact_number 所示:
#!/bin/sh
dos2unix $1
a=`sed -n '/TOTAL INTERACTION ENERGY MATRIX/=' $1|sed -n '$p'`
sed -n ''${a}',/INDIVIDUAL GROUPS INTERACTION/'p $1 |grep '[1-1000]' |sed -n '1466,$p'| cut -c1-7 |sed -e '$a\
' > number
提取结果如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
23
24
25
27
28
29
30
31
32
33
34
35
37
38
39
40
41
43
44
45
47
48
50
51
54
55
56
57
60
61
62
63
64
65
67
68
69
70
71
72
73
74
75
76
77
78
80
81
82
83
84
85
87
88
90
91
93
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
其中有些序号数没有被提取出来。
第二个脚本是提取序号数后面的数据,如 extact_out脚本:
#!/bin/sh
dos2unix $1
a=`sed -n '/TOTAL INTERACTION ENERGY MATRIX/=' $1|sed -n '$p'`
sed -n ''${a}',/INDIVIDUAL GROUPS INTERACTION/'p $1 |grep '[1-1000]' |sed -n '1466,$p'| cut -c8-19 |sed -e '$a\
' > ${1%out}tmp
生成的tmp文件如下:
-46.402
-1.670
-14.803
-81.984
-123.781
-2.014
-1.974
-0.227
0.898
-0.474
5.187
-137.736
-3.375
-69.712
-14.886
-29.161
-31.966
-26.630
-41.166
-10.523
-0.022
-25.691
2.415
-0.810
15.554
-10.792
-16.917
-6.108
-18.047
-14.392
-9.124
-11.182
-21.516
-56.818
-22.097
-13.954
11.128
-4.202
-6.104
-3.093
-1.789
-2.161
-10.059
-45.157
-22.211
-13.480
-10.918
-14.527
-84.508
104.442
0.109
-1.024
-1.171
-2.713
-24.719
-36.172
-26.182
-12.897
-17.210
-23.623
-15.788
-38.116
-1.112
-0.428
-1.078
-2.719
-1.131
-29.430
-47.441
-1.668
-0.643
-1.375
-0.165
-1.609
-12.820
-8.461
9.343
-23.651
-2.037
-6.075
0.410
-18.987
-46.711
-25.867
-40.888
-33.595
-25.011
-13.526
-45.274
-34.306
-27.879
-2.677
-1.403
0.966
0.134
0.261
34.627
-4.172
-14.935
-14.605
-30.374
-111.839
-10.304
0.090
-2790.460
也有一些行的数据没有被提出来。
请大家帮忙分析一下,为什么出现这样的情况? |
|