次のデータセットがあります。
ATOM 19 O WAT 2 -5.435 5.542 -3.646 1.00 0.00 O
ATOM 20 H1 WAT 2 -4.824 5.163 -2.982 1.00 0.00 H
ATOM 21 H2 WAT 2 -5.318 6.499 -3.469 1.00 0.00 H
TER
ATOM 22 O WAT 3 5.959 0.828 3.228 1.00 0.00 O
ATOM 23 H1 WAT 3 5.425 1.196 2.482 1.00 0.00 H
ATOM 24 H2 WAT 3 6.711 1.472 3.201 1.00 0.00 H
TER
ATOM 25 O WAT 4 -1.704 -4.348 -2.017 1.00 0.00 O
ATOM 26 H1 WAT 4 -1.895 -3.911 -1.145 1.00 0.00 H
ATOM 27 H2 WAT 4 -1.980 -5.267 -1.782 1.00 0.00 H
TER
ATOM 28 O WAT 5 -3.222 -3.303 5.524 1.00 0.00 O
ATOM 29 H1 WAT 5 -2.934 -3.466 4.594 1.00 0.00 H
ATOM 30 H2 WAT 5 -3.063 -2.335 5.580 1.00 0.00 H
TER
ATOM 31 O WAT 6 5.528 -4.121 -0.508 1.00 0.00 O
ATOM 32 H1 WAT 6 6.456 -3.823 -0.552 1.00 0.00 H
ATOM 33 H2 WAT 6 5.492 -4.428 0.428 1.00 0.00 H
TER
ATOM 34 O WAT 7 4.329 2.267 1.528 1.00 0.00 O
ATOM 35 H1 WAT 7 4.574 2.208 0.572 1.00 0.00 H
ATOM 36 H2 WAT 7 4.370 3.237 1.645 1.00 0.00 H
TER
ATOM 37 O WAT 8 -6.042 -5.320 -1.141 1.00 0.00 O
ATOM 38 H1 WAT 8 -6.693 -4.716 -0.701 1.00 0.00 H
ATOM 39 H2 WAT 8 -5.277 -5.191 -0.531 1.00 0.00 H
列3の文字列が= Oであることを確認し、列8の値が> 0.0であることを確認したいと思います。この場合、この内容と次の3行を印刷する必要があります。
1つの条件に合う行を印刷できますが、すべての条件を一緒にリンクすることはできません。
cat <inputfile>| awk '$8>0'
出力は次のとおりです
ATOM 22 O WAT 3 5.959 0.828 3.228 1.00 0.00 O
ATOM 23 H1 WAT 3 5.425 1.196 2.482 1.00 0.00 H
ATOM 24 H2 WAT 3 6.711 1.472 3.201 1.00 0.00 H
TER
ATOM 28 O WAT 5 -3.222 -3.303 5.524 1.00 0.00 O
ATOM 29 H1 WAT 5 -2.934 -3.466 4.594 1.00 0.00 H
ATOM 30 H2 WAT 5 -3.063 -2.335 5.580 1.00 0.00 H
TER
ATOM 34 O WAT 7 4.329 2.267 1.528 1.00 0.00 O
ATOM 35 H1 WAT 7 4.574 2.208 0.572 1.00 0.00 H
ATOM 36 H2 WAT 7 4.370 3.237 1.645 1.00 0.00 H
答え1
「削除」ではなく「この行印刷」を意味すると思います。列 3 に 0 が含まれていて、O
列 8 が 0 より大きい場合、カウンタを設定できます。カウンタが0より大きい場合、行を印刷してカウンタを減らします。
$ awk '$3=="O" && $8>0{ p=4 } p-->0' file
ATOM 22 O WAT 3 5.959 0.828 3.228 1.00 0.00 O
ATOM 23 H1 WAT 3 5.425 1.196 2.482 1.00 0.00 H
ATOM 24 H2 WAT 3 6.711 1.472 3.201 1.00 0.00 H
TER
ATOM 28 O WAT 5 -3.222 -3.303 5.524 1.00 0.00 O
ATOM 29 H1 WAT 5 -2.934 -3.466 4.594 1.00 0.00 H
ATOM 30 H2 WAT 5 -3.063 -2.335 5.580 1.00 0.00 H
TER
ATOM 34 O WAT 7 4.329 2.267 1.528 1.00 0.00 O
ATOM 35 H1 WAT 7 4.574 2.208 0.572 1.00 0.00 H
ATOM 36 H2 WAT 7 4.370 3.237 1.645 1.00 0.00 H
TER
答え2
awk '$3 == "O" && $8 > 0.0{x=NR+3}(NR<=x){print }' file
出力
ATOM 22 O WAT 3 5.959 0.828 3.228 1.00 0.00 O
ATOM 23 H1 WAT 3 5.425 1.196 2.482 1.00 0.00 H
ATOM 24 H2 WAT 3 6.711 1.472 3.201 1.00 0.00 H
TER
ATOM 28 O WAT 5 -3.222 -3.303 5.524 1.00 0.00 O
ATOM 29 H1 WAT 5 -2.934 -3.466 4.594 1.00 0.00 H
ATOM 30 H2 WAT 5 -3.063 -2.335 5.580 1.00 0.00 H
TER
ATOM 34 O WAT 7 4.329 2.267 1.528 1.00 0.00 O
ATOM 35 H1 WAT 7 4.574 2.208 0.572 1.00 0.00 H
ATOM 36 H2 WAT 7 4.370 3.237 1.645 1.00 0.00 H
TE
右