2017-10-13 156 views
-1

我有一個獨特的名字和內部的每個文件夾的文件夾40是一個名爲的summary.txt看起來像這樣:提取最後一個元素,並保留文件夾名稱

HISAT2 summary stats: 
Total reads: 36590175 
    Aligned 0 time: 1238197 (3.38%) 
    Aligned 1 time: 33866701 (92.56%) 
    Aligned >1 times: 1485277 (4.06%) 
Overall alignment rate: 96.62% 

我想創建一個新的.txt文件有文件夾名稱的列和某列的「96.62%」,使得最終的結果是這樣的:

Folder name  alignment rate 
Sample1    96.62% 
Sample2    94.53% 
...     ... 
SampleN    96.22% 

有沒有辦法做到這一點使用命令行。也許awk?任何幫助,將不勝感激。

哈利

回答

0

使用找到命令

$ echo -e "Folder name\talignment rate" > output.txt 

$ find . -iname "summary.txt" -exec awk 'END{ match(FILENAME,/\/(\w+)\//,a); print a[1]"\t\t"$4}' {} \; > output.txt 

輸出:

Folder name  alignment rate 
dir1   96.62% 
dir2   96.62% 
0

awk中溶液:

步驟之前(在result.txt設定標題行):

$ cat > result.txt 
Folder name  alignment rate 

awk '/^Overall/{ 
     printf "%-20s%s\n",substr(FILENAME,0,index(FILENAME, "/")-1), $NF >> "result.txt" 
    }' Sample*/summary.txt 

Ť他result.txt內容應該是這樣的:

Folder name  alignment rate 
Sample1    96.62% 
Sample2    94.53% 
... 
0

一個簡單的腳本awk

$ awk -F': ' 'BEGIN { print "folder", "rate" } 
       /Overall/ { sub("/.*","",FILENAME); print FILENAME, $2 }' */summary.txt 
folder rate 
a 96.62% 
b 91.63% 
c 93.22% 
相關問題