2013-03-04 183 views
0

這是我第一次發佈堆棧溢出,主要是在搜索解決方案和閱讀帖子之後。我想使用bash運行一個循環,所以我可以使用ext .u.clean對一堆不同的文件進行字符串搜索,我希望通過這些文件查看字符串「H#」或「h#」以及#爲1-28,並輸出到一個文件中,該文件的字符串中搜索到的編號。我在兩個字段($ 5和$ 0)中進行了兩次單獨搜索,我想將唯一匹配的總數輸出到文件「temp」#.txt。在此之後,我想對文件中輸入的兩個數字進行一些數學運算。到目前爲止,我已經得到了這麼多:bash for awk的循環變量

for i in {1..28}; do 
    awk -v var="$i" -F"\t" ' $19 ~ "_[hH]"var {print $0}' */*.u.clean | \ 
     sort | uniq | wc -l > 'temp'$i'.txt' | \ 
     awk -v var="$i" -F"\t" ' $19 ~ "_[hH]"var {print $5}' */*.u.clean | \ 
     sort | uniq | wc -l >> 'chris'$i'.txt' 
done 

問題是,數字出來錯了。我總共獲得了28個「temp」#「.txt」文件,但輸入不是正確的字數。我也不知道如何做一個數學運算,我有文件中的數字。有人可以幫我解決問題嗎?或者讓我指出正確的方向?謝謝你的幫助。

編輯:

下面是一些輸入的可能是什麼樣子:

112é03 294168 FBLN7_rs335586251.5 GG
2013年1月23日2 3 VSD控制130123_CR_CH5_H26 1 一.Conservative

17 d 11 294319 FBLN7_rs335586251.5 GG
06/26/2012 2 3 VSD控制
1 20626_CR_CH5_H3 1 A.Conservative

22乙01 294703 FBLN7_rs335586251.5 GG
06/26/2012 2 2 VSD控制
120626_CR_CH5_H4 1 A.Conservative

103甲07 295033 FBLN7_rs335586251.5 GG
01 /二千○十三分之二十三2 1 VSD控制
130123_CR_CH5_H23 1 A.Conservative

44克07 295119 Tbx5_rs61931008.5 GG
2012年7月11日2 5 ASD控制
120711_CR_CH5_H12 1 A.Conservative

42 H 12 295201 JAG1_rs1232607.5 GG
2012年7月11日1 2 ASD控制
120711_CR_CH5_H12 1 A.Conservative

我試圖找到一個計數在字段19(字段Tbx5_rs61931008.5)中出現多少次,H'#'的每次出現都是在#從1-28出現的情況下,將該數字輸出到每個H#的單獨文件中。然後我想知道H#的這些匹配,字段5有多少個唯一的場合,並將該數字輸出到每個H#的相同文件。我希望這是明確的,讓我知道它不是。謝謝。

+3

能否請您用一些輸入以及預期的輸出更新您的問題,因爲這會使您更容易回答您的問題?歡迎來到SO BTW :-) – 2013-03-04 20:41:43

+2

'wc -l> file | awk ...'管道的一部分顯然是錯誤的;你的意思是'wc -l>文件; awk ...'而不是?你不能重定向到一個文件並同時繼續管道(除非像'wc -l | tee file | awk ...',如果這是你真正想要的東西)。 – tripleee 2013-03-04 21:10:20

+0

不幸的是,你很難理解你想要做什麼,但是至少有一個可疑的事情正在進行:你說你是......在兩個領域($ 5和$ 0)做兩次單獨的搜索您只需打印$ 0和$ 5,您的搜索就會在$ 19 _both_次的字段中運行。編輯:沒有發現上面評論中提到的'>'問題 - 猜測那是你的主要問題。 – mikyra 2013-03-04 21:13:16

回答

1

這似乎有點複雜,你試圖實現。我會建議使用findgrep

find . -name "*.u.clean" -exec egrep -c '([Hh][1-9])|([Hh][1-2][0-9])' 

你必須採取輸出和做數學題

這是假設只有一個h#每行的文件中,如果這是不正確的,那麼你將需要多做一點工作。我會找到所有出現的文件,然後使用egrep -o '([Hh][1-9])|([Hh][1-2][0-9])' | wc -l來獲取每個文件的總數。

+0

我想統計每個H1-H28發生的總數,而不是總數。謝謝。 – charlesshaw 2013-03-05 19:30:47