2017-05-24 73 views
0

我有一個輸出這樣的事情如何通過避免標題標題grep一列?

################################################################# 
# 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. 

但我想只有下列作爲輸出

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

我是想在下面的命令

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

但線不成功,任何人都可以給我一個快速解決如何獲得上述這些類型的文件中只有2美元的數字?

+0

爲什麼你使用'grep「可以千卡/摩爾」'?這將只打印標題,而不是跳過它們。 – Barmar

回答

3

測試第一列是否爲數字,然後打印第二列。

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

嘗試:如果顯示的輸出總是相同的,那麼下面的內容可能會幫助你。

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

正在尋找sting輸出...完成並將變量A的值設置爲NULL。然後再次尋找一個模式,其中一行從-----開始,然後將變量A的值設爲1.然後提到A意味着檢查A的值是否爲空,然後打印$ 2(根據您的要求輸出第二個字段)。在這裏提到Input_file。

而且要麼你可以使用上面或者如果輸出從運行一個腳本來,那麼你可以嘗試使用:

./your_already_running_script | awk '/output ... done/{A=""} /^-----/{A=1;next} A{print $2}' 
相關問題