로그 파일에서 데이터를 추출하기 위해 다시 awk와 싸우고 있습니다.awk가 텍스트 문자열 사이에서 데이터 블록을 추출합니다.
4C*DJ - (B-C)*DJK + 2*(2A+B+C)*D1 - 4*(4A+B-3C)*D2 = 0
Value = 0.5293955920D-22
Alpha Matrix in cm-1
Axis Mode Inertia Coriol. Anharm. Total
x 1 -0.37699D-03 -0.36413D-02 0.10830D-01 0.68121D-02
x 2 -0.83656D-03 -0.53163D-02 0.14483D-01 0.83306D-02
x 3 -0.15253D-02 -0.10512D-01 0.20064D-01 0.80264D-02
x 4 -0.17103D-03 -0.73492D-03 0.14953D-01 0.14047D-01
x 5 -0.96312D-03 -0.11748D-01 0.15825D-02 -0.11128D-01
x 6 -0.46095D-03 -0.94225D-02 0.44165D-02 -0.54669D-02
x 7 -0.26926D-01 -0.10167D-01 0.29406D-01 -0.76866D-02
x 8 -0.17827D-02 -0.21079D-01 0.74564D-02 -0.15405D-01
x 9 -0.55840D-02 0.84897D-01 -0.29596D-02 0.76354D-01
x 10 -0.50287D-24 0.36312D-01 -0.44078D-02 0.31904D-01
x 11 -0.48777D-24 -0.63320D-01 0.18876D-02 -0.61432D-01
x 12 -0.35364D-24 0.42877D-01 0.62352D-03 0.43500D-01
y 1 -0.23141D-05 -0.13777D-03 0.53278D-03 0.39270D-03
y 2 -0.62128D-05 -0.87905D-04 0.36602D-03 0.27190D-03
y 3 -0.55613D-05 -0.33722D-04 0.28874D-03 0.24946D-03
y 4 -0.47995D-04 -0.60863D-03 0.17426D-02 0.10860D-02
y 5 -0.36076D-04 -0.20493D-03 0.12026D-03 -0.12075D-03
y 6 -0.12725D-03 -0.61930D-03 -0.15830D-03 -0.90485D-03
y 7 -0.19917D-03 -0.55423D-04 0.10520D-02 0.79740D-03
y 8 -0.48978D-03 -0.13733D-02 0.54899D-03 -0.13141D-02
y 9 -0.11432D-02 0.62058D-03 -0.20074D-04 -0.54272D-03
y 10 -0.16078D-24 0.20852D-02 -0.88466D-04 0.19967D-02
y 11 -0.63877D-25 0.18274D-03 -0.13682D-03 0.45922D-04
y 12 -0.43257D-25 0.92039D-03 -0.61669D-03 0.30370D-03
z 1 -0.69174D-07 -0.23737D-03 0.59290D-03 0.35547D-03
z 2 -0.60773D-05 -0.18704D-03 0.53271D-03 0.33960D-03
z 3 -0.46425D-05 -0.29722D-03 0.57403D-03 0.27217D-03
z 4 -0.22234D-04 -0.47670D-03 0.15748D-02 0.10759D-02
z 5 -0.20254D-04 0.24124D-03 0.11848D-03 0.33947D-03
z 6 -0.42788D-04 0.99264D-04 -0.40246D-04 0.16230D-04
z 7 -0.10941D-03 0.30020D-03 0.13135D-02 0.15043D-02
z 8 -0.19997D-03 0.32196D-03 0.54501D-03 0.66699D-03
z 9 -0.20819D-03 0.45666D-03 -0.67765D-04 0.18071D-03
z 10 -0.55249D-25 0.00000D+00 -0.14491D-03 -0.14491D-03
z 11 -0.55828D-26 0.00000D+00 -0.69139D-04 -0.69139D-04
z 12 -0.26265D-26 0.00000D+00 -0.45200D-03 -0.45200D-03
Vibro-Rot alpha Matrix (cm-1)
a(z) b(x) c(y)
Q(1) 0.00681 0.00039 0.00036
내가 "X 1 -0.37 (이 경우)에서 데이터를 추출해야합니다 : 내 로그 파일의 해당 지역은 그러나 몇 천 개 라인이 블록 위와 아래가, 다음과 같습니다. .. "~"z 12 -0.262 ... "
내가 알고있는 지점으로 데이터를 추출하기 위해 awk를 얻을 수 있다면 파일을 head and tail 할 수 있습니다. 저는이 파일 중 약 300 개를 가지고 있는데, 각기 다른 수의 선로를 가지고 있기 때문에 선 수를 계산할 수는 없지만 "Axis Mode Inertia ..."로 시작하여 "Vibro-Rot alpha Matrix"로 끝납니다.
내가 현재 사용하려고 해요 :
(그것은 내가 이후에 차단 할 수있는 헤더를 포함하지만) 파일의 시작을 얻기 위해 노력awk '$1=="Axis"&&$2=="Mode"{t=1};t;/[0-9]+ "Vibro-Rot alpha Matrix"/{exit}' file.log
. 그러나 awk 명령의 마지막 부분은 작동하지 않습니다.^Vib/{exit}와 다른 것들로 끝내려고했으나 아무것도 작동하지 않는 것 같습니다. 단지 내가 할 때 로그 파일을 몇 천 줄만 받았습니다.
필자가 확신 하듯이 맨 위에는 "축"앞에, 파일 맨 아래에는 "바이브로 - 썩음 (Vibro-Rot)"앞에 하나의 공백이 있습니다. "$ 1 =="축 "& & $ 2 =="모드 "부분은 하나의 공백을 고려하지 않습니다.
"Vibro-Rot alpha Matrix"가있는 줄까지 잘라낼 수없는 것은 무엇입니까?
미리 감사드립니다.
벤
둘 다 완벽하게 작동합니다! 나는 양쪽 다 시험해 보았던 것처럼 느낀다. 그러나 나는 명백하게 무엇인가 위로 어 지르게했다. 엄청 고마워! – user3246787
당신은 환영합니다 ;-) – arutaku