2016-09-18 2 views
0

형식을 유지하면서 awk 명령을 사용하여 작은 코드에 대한 질문이 있습니다. 나는 어디에서나 대답/해결책을 찾지 못했습니다.bash를 사용하여 두 개의 정규 표현식 사이에서 데이터를 추출하려면

출력 파일을 구문 분석하고 첫 번째 표현 (포함) ATOMIC과 두 번째 표현 (제외) Bond 사이의 모든 데이터를 추출하려고합니다. 이 데이터는 새 파일 $1_geom으로 전송됩니다. 지금까지 나는 다음과 같습니다

`awk '/ATOMIC/{flag=1;next}/Bond lengths in Bohr/{flag=0}flag' $1` >> $1_geom 

이 스크립트는 나를 위해 정확한 데이터를 추출하지만,이 문제가 있습니다

  1. 라인 ATOMIC 데이터로 추출되지는

  2. 데이터가 추출되어 한 줄에 추가됩니다. 구문 분석 된 파일 (5 개 열, 가변 길이)에서 서식을 유지하려고합니다. 시각 자료를 보려면 첨부 파일을 참조하십시오. Visual Example Attachment. 포맷을 유지할 수 있도록 데이터 >>를 제외하고 다른 방법을 추가 할 수 있습니까?

아무쪼록 잘 부탁드립니다. 감사합니다.

+0

왜 명령이 백틱으로 표시됩니까? '\'' – user000001

답변

0

next은 첫 번째 일치를 건너 뜁니다. 네가 원하지 않으면 꺼내.

자체 백틱은 쉘 구문 오류입니다 (Awk 스크립트가 유효한 쉘 명령을 생성하지 않는 한). 오류가 발생하지 않도록 실제 스크립트에서 useless echo 또는 그와 비슷한 내용이 있다고 생각하지만 대신 설명하는 증상이 나타납니다.

+0

화면이 내 추측을 확인하는 것 같습니다. 실제로 보여주고 자하는 것이 텍스트 일 ​​때 이미지를 게시하지 마십시오. – tripleee

+0

도움 주셔서 감사합니다! 이것은 csh 스크립트의 코드 부분이었고이 줄 앞에 "echo"가있었습니다. "에코"를 제거하면 완벽하게 작동합니다. –

0

이것은 csh 스크립트의 코드 일부이며이 줄 앞에 "echo"가 있습니다. "에코"를 제거하면 완벽하게 작동하고 내가 가진 두 가지 질문을 해결할 수 있습니다.

+0

제쳐두고'csh'에서 정상적인 쉘로 전환 한 것에 대해 여러 번 감사 할 것입니다. [tchrist의 오래된 FAQ] (http://www.perl.com/doc/FMTEYEWTK/versus/csh.whynot)에는 모든 먼지가 있습니다. – tripleee

관련 문제