다른 파일의 파일에서 세 번째 열 (특정 문자까지)을 바꾸는 방법

Vvolf 라인

나는 두 개의 파일이 있습니다 bor.mol2에서 bor.com을 bor.mol2을하고, X, Y, 사이 원자의 Z 좌표가 @<TRIPOS>ATOM@<TRIPOS>BOND이 파일 제 3 회에서 키워드, 4, 5 열은 원자의 좌표입니다. 예를 들어 H1 좌표는 다음과 같습니다. -0.1660 2.5890 -0.2030

다른 파일은 bor.com이고 두 번째, 세 번째 및 네 번째 열은 X, Y, Z 좌표 ( 0 1사이 1 2 1.0)입니다. bor.mol2 좌표를 bor.com 좌표로 바꾸고 다음과 같이 boron.mol2 룩을 얻고 싶습니다.

awk 또는 grep을 사용하여이를 수행하는 방법은 무엇입니까?

bor.mol2

@<TRIPOS>MOLECULE
MOL
   19    18     1     0     0
SMALL
resp


@<TRIPOS>ATOM
      1 H1          -0.1660     2.5890    -0.2030 H          1 MOL       0.425234
      2 O1          -0.6950     1.8160    -0.3360 O          1 MOL      -0.740851
      3 B1          -0.0040     0.6800    -0.0410 B          1 MOL       0.916675
      4 O2           1.2760     0.7930     0.3900 O          1 MOL      -0.584834
      5 C1           2.0810    -0.3200     0.7070 C          1 MOL       0.351772
      6 C2           2.8020    -0.8460    -0.5220 C          1 MOL      -0.254733
      7 H2           3.3950    -0.0620    -0.9800 H          1 MOL       0.065923
      8 H3           2.0930    -1.2150    -1.2550 H          1 MOL       0.065923
      9 H4           3.4660    -1.6630    -0.2510 H          1 MOL       0.065923
     10 H5           1.4780    -1.0990     1.1550 H          1 MOL      -0.005252
     11 H6           2.7960     0.0200     1.4450 H          1 MOL      -0.005252
     12 O3          -0.5850    -0.5340    -0.1770 O          1 MOL      -0.584834
     13 C3          -1.9220    -0.7000    -0.5940 C          1 MOL       0.351772
     14 C4          -2.8780    -0.6420     0.5840 C          1 MOL      -0.254733
     15 H7          -3.8950    -0.8350     0.2550 H          1 MOL       0.065923
     16 H8          -2.8530     0.3360     1.0520 H          1 MOL       0.065923
     17 H9          -2.6110    -1.3870     1.3260 H          1 MOL       0.065923
     18 H10         -2.1780     0.0530    -1.3290 H          1 MOL      -0.005252
     19 H11         -1.9740    -1.6700    -1.0740 H          1 MOL      -0.005252
@<TRIPOS>BOND
     1     1     2 1   
     2     2     3 1   
     3     3     4 1   
     4     3    12 1   
     5     4     5 1   
     6     5     6 1   
     7     5    10 1   
     8     5    11 1   
     9     6     7 1   
    10     6     8 1   
    11     6     9 1   
    12    12    13 1   
    13    13    14 1   
    14    13    18 1   
    15    13    19 1   
    16    14    15 1   
    17    14    16 1   
    18    14    17 1   
@<TRIPOS>SUBSTRUCTURE
     1 MOL         1 TEMP              0 ****  ****    0 ROOT

bor.com :

%nprocshared=4
%mem=1GB
# am1 geom=connectivity sp

MOL

0 1
 H                 -0.16720146    2.58919775   -0.19942423
 O                 -0.69500000    1.81600000   -0.33600000
 B                 -0.00400000    0.68000000   -0.04100000
 O                 -0.38867986   -0.48241992   -0.62214658
 C                  0.24973028   -1.71425091   -0.37253088
 C                 -0.34829932   -2.40893346    0.83855738
 H                 -1.41561875   -2.54983268    0.70799890
 H                 -0.18501334   -1.82371627    1.73688335
 H                  0.11053291   -3.38414892    0.98087325
 H                  1.31216868   -1.56088464   -0.23520857
 H                  0.10760188   -2.31766293   -1.25975262
 O                  1.04303104    0.71384972    0.81482310
 C                  1.49768870    1.90335555    1.42093890
 C                  2.50478033    2.62078365    0.54000342
 H                  2.89233808    3.49938587    1.04758216
 H                  2.04460091    2.94105867   -0.38832398
 H                  3.33724896    1.96604913    0.30506364
 H                  0.65864568    2.55057309    1.64429105
 H                  1.95688815    1.61234302    2.35819638

 1 2 1.0
 2 3 1.0
 3 4 1.0 12 1.0
 4 5 1.0
 5 6 1.0 10 1.0 11 1.0
 6 7 1.0 8 1.0 9 1.0
 7
 8
 9
 10
 11
 12 13 1.0
 13 14 1.0 18 1.0 19 1.0
 14 15 1.0 16 1.0 17 1.0
 15
 16
 17
 18
 19

결과는 다음과 같아야합니다.

@<TRIPOS>MOLECULE
MOL
   19    18     1     0     0
SMALL
resp


@<TRIPOS>ATOM
      1 H1           -0.16720146    2.58919775   -0.19942423 H          1 MOL       0.425234
      2 O1           -0.69500000    1.81600000   -0.33600000 O          1 MOL      -0.740851
      3 B1           -0.00400000    0.68000000   -0.04100000 B          1 MOL       0.916675
      4 O2           -0.38867986   -0.48241992   -0.62214658 O          1 MOL      -0.584834
      5 C1            0.24973028   -1.71425091   -0.37253088 C          1 MOL       0.351772
      6 C2           -0.34829932   -2.40893346    0.83855738 C          1 MOL      -0.254733
      7 H2           -1.41561875   -2.54983268    0.70799890 H          1 MOL       0.065923
      8 H3           -0.18501334   -1.82371627    1.73688335 H          1 MOL       0.065923
      9 H4            0.11053291   -3.38414892    0.98087325 H          1 MOL       0.065923
     10 H5            1.31216868   -1.56088464   -0.23520857 H          1 MOL      -0.005252
     11 H6            0.10760188   -2.31766293   -1.25975262 H          1 MOL      -0.005252
     12 O3            1.04303104    0.71384972    0.81482310 O          1 MOL      -0.584834
     13 C3            1.49768870    1.90335555    1.42093890 C          1 MOL       0.351772
     14 C4            2.50478033    2.62078365    0.54000342 C          1 MOL      -0.254733
     15 H7            2.89233808    3.49938587    1.04758216 H          1 MOL       0.065923
     16 H8            2.04460091    2.94105867   -0.38832398 H          1 MOL       0.065923
     17 H9            3.33724896    1.96604913    0.30506364 H          1 MOL       0.065923
     18 H10           0.65864568    2.55057309    1.64429105 H          1 MOL      -0.005252
     19 H11           1.95688815    1.61234302    2.35819638 H          1 MOL      -0.005252
@<TRIPOS>BOND
     1     1     2 1   
     2     2     3 1   
     3     3     4 1   
     4     3    12 1   
     5     4     5 1   
     6     5     6 1   
     7     5    10 1   
     8     5    11 1   
     9     6     7 1   
    10     6     8 1   
    11     6     9 1   
    12    12    13 1   
    13    13    14 1   
    14    13    18 1   
    15    13    19 1   
    16    14    15 1   
    17    14    16 1   
    18    14    17 1   
@<TRIPOS>SUBSTRUCTURE
     1 MOL         1 TEMP              0 ****  ****    0 ROOT
멘돈

다음은 한 가지 접근 방식입니다.

$ awk '{
  if(/@<TRIPOS>ATOM/){a=1; print; next}
  if(/@<TRIPOS>BOND/){a=0}
  if(NR==FNR){
      val[FNR][2]=$2;
      val[FNR][3]=$3;
      val[FNR][4]=$4;
  }
  else{
    if(a){
      OFS="\t"
      $3=val[a][2];
      $4=val[a][3];
      $5=val[a][4]
      a++;
    }
    print $0
  }
}' <(grep '^ [A-Z]' bor.com) bor.mol2 

위의 결과는 다음과 같습니다.

@<TRIPOS>MOLECULE
MOL
   19    18     1     0     0
SMALL
resp


@<TRIPOS>ATOM
1   H1  -0.16720146 2.58919775  -0.19942423 H   1   MOL 0.425234
2   O1  -0.69500000 1.81600000  -0.33600000 O   1   MOL -0.740851
3   B1  -0.00400000 0.68000000  -0.04100000 B   1   MOL 0.916675
4   O2  -0.38867986 -0.48241992 -0.62214658 O   1   MOL -0.584834
5   C1  0.24973028  -1.71425091 -0.37253088 C   1   MOL 0.351772
6   C2  -0.34829932 -2.40893346 0.83855738  C   1   MOL -0.254733
7   H2  -1.41561875 -2.54983268 0.70799890  H   1   MOL 0.065923
8   H3  -0.18501334 -1.82371627 1.73688335  H   1   MOL 0.065923
9   H4  0.11053291  -3.38414892 0.98087325  H   1   MOL 0.065923
10  H5  1.31216868  -1.56088464 -0.23520857 H   1   MOL -0.005252
11  H6  0.10760188  -2.31766293 -1.25975262 H   1   MOL -0.005252
12  O3  1.04303104  0.71384972  0.81482310  O   1   MOL -0.584834
13  C3  1.49768870  1.90335555  1.42093890  C   1   MOL 0.351772
14  C4  2.50478033  2.62078365  0.54000342  C   1   MOL -0.254733
15  H7  2.89233808  3.49938587  1.04758216  H   1   MOL 0.065923
16  H8  2.04460091  2.94105867  -0.38832398 H   1   MOL 0.065923
17  H9  3.33724896  1.96604913  0.30506364  H   1   MOL 0.065923
18  H10 0.65864568  2.55057309  1.64429105  H   1   MOL -0.005252
19  H11 1.95688815  1.61234302  2.35819638  H   1   MOL -0.005252
@<TRIPOS>BOND
     1     1     2 1   
     2     2     3 1   
     3     3     4 1   
     4     3    12 1   
     5     4     5 1   
     6     5     6 1   
     7     5    10 1   
     8     5    11 1   
     9     6     7 1   
    10     6     8 1   
    11     6     9 1   
    12    12    13 1   
    13    13    14 1   
    14    13    18 1   
    15    13    19 1   
    16    14    15 1   
    17    14    16 1   
    18    14    17 1   
@<TRIPOS>SUBSTRUCTURE
     1 MOL         1 TEMP              0 ****  ****    0 ROOT

grep '^ [A-Z]' bor.com명령은 bor.com공백으로 시작한 다음 대문자로 시작 하는 행만 인쇄합니다 . 이것들은 우리가 원하는 유일한 라인입니다 bor.com. 의 출력은 grepbash의 <()구성을 사용하여 파일 핸들로 awk에 전달됩니다 . 그런 다음 스크립트 val는 읽고있는 파일이 첫 번째 입력 파일 인 경우 배열에 값을 저장 합니다 ( NR==FNR)두 번째 파일 인 경우 @<TRIPOS>ATOM@<TRIPOS>BOND문자열 사이에있는 경우 3 번째, 4 번째 및 5 번째 필드를 대체합니다. val배열 의 값으로 .

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

파일의 특정 내용을 다른 파일의 첫 번째 줄로 바꾸는 방법은 무엇입니까?

분류에서Dev

첫 번째 열의 특정 문자열과 일치하는 외부 파일을 읽고 PHP에서 두 번째 열의 각 문자열을 반환합니다.

분류에서Dev

여러 텍스트 파일의 다섯 번째 줄에서 문자열을 바꾸는 방법은 무엇입니까?

분류에서Dev

첫 번째 파일의 특정 열과 부분적으로 일치 할 수있는 다른 파일의 패턴을 기반으로 파일에서 줄 제거

분류에서Dev

두 개의 다른 csv 파일에서 열을 비교하고 다른 파일의 열을 바꾸는 방법

분류에서Dev

두 번째 열에 키가있는 파일의 첫 번째 열을 4 줄마다 정렬하는 방법

분류에서Dev

문자의 두 번째 또는 세 번째 발생까지 모든 것을 제거하는 파일의 이름을 바꾸는 방법은 무엇입니까?

분류에서Dev

2 번째 및 4 번째 열을 다른 파일에 쓰는 방법

분류에서Dev

고유 한 첫 번째 열과 특정 세 번째 열 값이있는 파일의 행만 인쇄합니다.

분류에서Dev

UNIX 셸에서 특정 문자열을 포함하는 모든 파일을 찾은 다음 각 파일의 네 번째 줄을 인쇄하는 방법은 무엇입니까?

분류에서Dev

각 줄을 사용하여 파일의 각 줄을 반복하여 다른 파일의 문자열을 바꾸고 매번 새 파일을 만드는 방법

분류에서Dev

R의 gsubfn, 문자열 세트에서 두 번째 숫자 세트 만 조건부로 바꾸는 방법

분류에서Dev

문자열 내에서 첫 번째 공백을 다른 문자로 바꾸는 방법은 무엇입니까?

분류에서Dev

다른 파일에서 찾을 수있는 한 파일의 두 번째 열에서 줄을 추출하는 방법은 무엇입니까?

분류에서Dev

두 파일의 첫 번째 열을 비교하고 파일 1의 세 번째 열을 파일 2의 네 번째 열로 바꿉니다.

분류에서Dev

두 번째 파일에서 정확히 마하 문자열 인 경우 한 파일에서 문자열을 삭제하는 방법은 무엇입니까?

분류에서Dev

한 파일의 일치하는 문자열을 다른 파일의 일치하는 문자열로 바꾸는 방법은 무엇입니까?

분류에서Dev

C 프로그래밍에서 텍스트 파일의 세 번째 열을 얻는 방법

분류에서Dev

sed를 사용하여 파일의 특정 줄 / 줄을 다른 파일의 내용으로 바꾸는 방법

분류에서Dev

구분 기호의 세 번째 발생까지 문자열의 일부를 바꾸는 방법은 무엇입니까?

분류에서Dev

파일의 첫 번째 줄에 특정 문자열이 포함되어 있는지 확인하는 방법은 무엇입니까?

분류에서Dev

모든 파일에서 첫 번째 열을 제거하고 바꾸는 방법은 무엇입니까?

분류에서Dev

특정 일치에 대한 문자열의 첫 번째와 마지막 문자를 바꾸는 RegEx

분류에서Dev

이름에 특정 문자열이 포함 된 일부 폴더에서만 파일의 문자열을 바꾸는 방법

분류에서Dev

파일의 특정 열에서 주어진 조건에 대한 값을 바꾸는 방법

분류에서Dev

특정 열의 다른 파일에있는 문자열 검색

분류에서Dev

다른 열에서 첫 번째, 두 번째 및 세 번째 값을 선택하는 방법-Ms Access

분류에서Dev

파일의 URL 문자열에서 IP 만 바꾸는 방법

분류에서Dev

sed를 사용하여 파일의 세 번째 행을 바꾸는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    파일의 특정 내용을 다른 파일의 첫 번째 줄로 바꾸는 방법은 무엇입니까?

  2. 2

    첫 번째 열의 특정 문자열과 일치하는 외부 파일을 읽고 PHP에서 두 번째 열의 각 문자열을 반환합니다.

  3. 3

    여러 텍스트 파일의 다섯 번째 줄에서 문자열을 바꾸는 방법은 무엇입니까?

  4. 4

    첫 번째 파일의 특정 열과 부분적으로 일치 할 수있는 다른 파일의 패턴을 기반으로 파일에서 줄 제거

  5. 5

    두 개의 다른 csv 파일에서 열을 비교하고 다른 파일의 열을 바꾸는 방법

  6. 6

    두 번째 열에 키가있는 파일의 첫 번째 열을 4 줄마다 정렬하는 방법

  7. 7

    문자의 두 번째 또는 세 번째 발생까지 모든 것을 제거하는 파일의 이름을 바꾸는 방법은 무엇입니까?

  8. 8

    2 번째 및 4 번째 열을 다른 파일에 쓰는 방법

  9. 9

    고유 한 첫 번째 열과 특정 세 번째 열 값이있는 파일의 행만 인쇄합니다.

  10. 10

    UNIX 셸에서 특정 문자열을 포함하는 모든 파일을 찾은 다음 각 파일의 네 번째 줄을 인쇄하는 방법은 무엇입니까?

  11. 11

    각 줄을 사용하여 파일의 각 줄을 반복하여 다른 파일의 문자열을 바꾸고 매번 새 파일을 만드는 방법

  12. 12

    R의 gsubfn, 문자열 세트에서 두 번째 숫자 세트 만 조건부로 바꾸는 방법

  13. 13

    문자열 내에서 첫 번째 공백을 다른 문자로 바꾸는 방법은 무엇입니까?

  14. 14

    다른 파일에서 찾을 수있는 한 파일의 두 번째 열에서 줄을 추출하는 방법은 무엇입니까?

  15. 15

    두 파일의 첫 번째 열을 비교하고 파일 1의 세 번째 열을 파일 2의 네 번째 열로 바꿉니다.

  16. 16

    두 번째 파일에서 정확히 마하 문자열 인 경우 한 파일에서 문자열을 삭제하는 방법은 무엇입니까?

  17. 17

    한 파일의 일치하는 문자열을 다른 파일의 일치하는 문자열로 바꾸는 방법은 무엇입니까?

  18. 18

    C 프로그래밍에서 텍스트 파일의 세 번째 열을 얻는 방법

  19. 19

    sed를 사용하여 파일의 특정 줄 / 줄을 다른 파일의 내용으로 바꾸는 방법

  20. 20

    구분 기호의 세 번째 발생까지 문자열의 일부를 바꾸는 방법은 무엇입니까?

  21. 21

    파일의 첫 번째 줄에 특정 문자열이 포함되어 있는지 확인하는 방법은 무엇입니까?

  22. 22

    모든 파일에서 첫 번째 열을 제거하고 바꾸는 방법은 무엇입니까?

  23. 23

    특정 일치에 대한 문자열의 첫 번째와 마지막 문자를 바꾸는 RegEx

  24. 24

    이름에 특정 문자열이 포함 된 일부 폴더에서만 파일의 문자열을 바꾸는 방법

  25. 25

    파일의 특정 열에서 주어진 조건에 대한 값을 바꾸는 방법

  26. 26

    특정 열의 다른 파일에있는 문자열 검색

  27. 27

    다른 열에서 첫 번째, 두 번째 및 세 번째 값을 선택하는 방법-Ms Access

  28. 28

    파일의 URL 문자열에서 IP 만 바꾸는 방법

  29. 29

    sed를 사용하여 파일의 세 번째 행을 바꾸는 방법은 무엇입니까?

뜨겁다태그

보관