2014-07-05 4 views
0

부분 좌표계를 직교 좌표계로 변환하는 스크립트를 작성하고 싶습니다.특정 부분을 제거하기위한 Bash 스크립팅

여기 입력 파일에 불필요한 부분이 있습니다. 제거하고 싶습니다. 불필요한 상단 섹션을 제거하려면 그냥 sed -i '1,7 s/.*//g' geometry.xyz을 사용하고 있습니다 (처음 7 줄은 항상 필요하지 않습니다). 하지만 문제는 크기가 변경 될 수 있습니다. 이것은 다음과 같습니다.

%BLOCK LATTICE_CART 
     10.000000000000000  0.000000000000000  0.000000000000000 
     0.000000000000000  10.000000000000000  0.000000000000000 
     0.000000000000000  0.000000000000000  10.000000000000000 
%ENDBLOCK LATTICE_CART 

%BLOCK POSITIONS_FRAC 
    H 0.3242730364399766 -0.5778932059463918 0.4725289033063597 
    H 0.3242730880505244 -0.4462573476378897 0.3408930320952251 
    H 0.5269396206127043 -0.6403171603506288 0.3779836353112689 
    H 0.4391824086567526 -0.6285598118052995 0.5417408894621464 
    H 0.6929877354648144 -0.5297761432888469 0.4524840992286400 
    H 0.6466039123419516 -0.6708589950924689 0.5647345854707825 
    H 0.6049230092979219 -0.4959539583844693 0.6129729324712603 
    H 0.4279396231283572 -0.3440 0.5700442724565965 
    C 0.3622730487068306 -0.4740752814020994 0.4447109742648412 
    C 0.4762730467994820 -0.4740752814020994 0.4447109742648412 
    C 0.5142730074557883 -0.5778932235717150 0.4725289080290508 
    C 0.6146969322498489 -0.5686205772550322 0.5256801349609578 
    O 0.5142730074557883 -0.3980752729966930 0.5207109826702476 
%ENDBLOCK POSITIONS_FRAC 

%BLOCK KPOINTS_LIST 
    0.0000000000000000 0.0000000000000000 0.0000000000000000  1.000000000000000 
%ENDBLOCK KPOINTS_LIST 

%BLOCK CELL_CONSTRAINTS 
     1  2  3 
     4  5  6 
%ENDBLOCK CELL_CONSTRAINTS 

FIX_COM : false 
%BLOCK IONIC_CONSTRAINTS 
%ENDBLOCK IONIC_CONSTRAINTS 

이제는 시스템에 수소 또는 산소 또는 탄소가 더있을 수 있습니다. 그래서, 나는 스크립트가 %를 찾아 그 이후의 모든 것을 삭제하기를 원합니다. 가능한가? 감사

+2

을 줄 것인가. 작성한 코드에 특별한 어려움이있는 경우 여기에 포함 된 질문을 편집하면 도움이 될 것입니다. 그렇지 않으면 노력의 표시를 시도하십시오. 감사. –

+0

당신은 당신이 원하는 것을 묘사하기 시작한 후 어떻게 산소가 당신의 데이터에서 어떻게 보일지 말하지 않고 추가 산소에 대해 이야기하기 시작했습니다! 그리고 나서 데이터에 퍼센트 기호가 가득 찰 때 퍼센트 기호 제거 후 모든 것을 원합니다. 우리가 이해할 수 있도록 예상 결과를 보여주십시오. –

답변

0
awk '/%ENDBLOCK POSITIONS_FRAC/{ exit }; p; /%BLOCK POSITIONS_FRAC/{p = 1};' geometry.xyz 

그것은 확실히 가능하지만, SO 쓰기 내 코드를 위해 무료로 거래하지

H 0.3242730364399766 -0.5778932059463918 0.4725289033063597 
    H 0.3242730880505244 -0.4462573476378897 0.3408930320952251 
    H 0.5269396206127043 -0.6403171603506288 0.3779836353112689 
    H 0.4391824086567526 -0.6285598118052995 0.5417408894621464 
    H 0.6929877354648144 -0.5297761432888469 0.4524840992286400 
    H 0.6466039123419516 -0.6708589950924689 0.5647345854707825 
    H 0.6049230092979219 -0.4959539583844693 0.6129729324712603 
    H 0.4279396231283572 -0.3440 0.5700442724565965 
    C 0.3622730487068306 -0.4740752814020994 0.4447109742648412 
    C 0.4762730467994820 -0.4740752814020994 0.4447109742648412 
    C 0.5142730074557883 -0.5778932235717150 0.4725289080290508 
    C 0.6146969322498489 -0.5686205772550322 0.5256801349609578 
    O 0.5142730074557883 -0.3980752729966930 0.5207109826702476