2017-05-24 5 views
0

私はこのタイトル見出しを避けて列をグレープする方法は?

################################################################# 
# If you used AutoDock Vina in your work, please cite:   # 
#                # 
# O. Trott, A. J. Olson,          # 
# AutoDock Vina: improving the speed and accuracy of docking # 
# with a new scoring function, efficient optimization and  # 
# multithreading, Journal of Computational Chemistry 31 (2010) # 
# 455-461              # 
#                # 
# DOI 10.1002/jcc.21334           # 
#                # 
# Please see http://vina.scripps.edu for more information.  # 
################################################################# 

Detected 4 CPUs 
Reading input ... done. 
Setting up the scoring function ... done. 
Analyzing the binding site ... done. 
Using random seed: -1786073016 
Performing search ... done. 
Refining results ... done. 

mode | affinity | dist from best mode 
    | (kcal/mol) | rmsd l.b.| rmsd u.b. 
-----+------------+----------+---------- 
    1  -10.7  0.000  0.000 
    2  -10.4  0.460  1.612 
    3   -8.6  1.625  6.452 
    4   -8.1  1.515  5.404 
    5   -8.1  1.569  5.214 
    6   -7.9  1.616  6.148 
    7   -7.9  1.380  2.324 
Writing output ... done. 

のような出力に何かを持っているしかし、私は次のコマンド

grep ' kcal/mol ' ./1/data01/lig2_noch.pdbqt.txt | awk '{print $2}' >>test1.txt 

しかし、のラインにしようとしていた出力

-10.7 
-10.4 
-8.6  
-8.1  
-8.1  
-7.9 
-7.9 

として、以下の唯一の希望なし成功、誰も私にこの種のファイルで上記のように2ドルの数字を取得する方法の迅速な修正を与えることができますか?

+0

なぜあなたは '' grepの「キロカロリー/モル」を使用していますか?それは見出しのみを印刷し、それらをスキップしません。 – Barmar

答えて

3

最初の列が数値かどうかをテストし、2番目の列を出力します。

awk '$1 ~ /^[0-9]+$/ {print $2}' ./1/data01/lig2_noch.pdbqt.txt >> test1.txt 
+0

私のような出力を得た場合は、 ' # O. マルチスレッディングとAUTODOCK 、 455から461 # DOI # してください| (キロカロリー/モル) -8.4 -8.3 -8.0 -7.7 -7.6 -7.6 -7.6 -7.2 -7.2' –

+0

私はgrepを '' ./1/data01を使用して同じ出力を得ました/lig2_noch.pdbqt.txt | awk '{print $ 2}' >> test1.txtどのように以前のものではなく数字だけを得るか? –

+0

'\ d'を' [0-9] 'に変更しました。なぜなら' awk'はその正規表現を理解できないからです。今それは私のために働く。 – Barmar

0

try:出力が常に同じであれば、次のように表示されます。

awk '/output ... done/{A=""} /^-----/{A=1;next} A{print $2}' Input_file 

スティング出力を探して...終了し、変数Aの値をNULLにする。次に、行が-----から始まり、変数Aの値を1にするパターンを探します。次に、Aの記述は、Aの値がnullでないかどうかをチェックし、$ 2(必要に応じて2番目のフィールド)を出力することを意味します。 Input_fileをここに示します。

また、あなたは上に使用することができますいずれか、またはその出力は、スクリプトを実行するから来ているならば、あなたが試みることができる:

./your_already_running_script | awk '/output ... done/{A=""} /^-----/{A=1;next} A{print $2}' 
関連する問題