這是我第一次發佈堆棧溢出,主要是在搜索解決方案和閱讀帖子之後。我想使用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 一.Conservative17 d 11 294319 FBLN7_rs335586251.5 GG
06/26/2012 2 3 VSD控制
1 20626_CR_CH5_H3 1 A.Conservative22乙01 294703 FBLN7_rs335586251.5 GG
06/26/2012 2 2 VSD控制
120626_CR_CH5_H4 1 A.Conservative103甲07 295033 FBLN7_rs335586251.5 GG
01 /二千○十三分之二十三2 1 VSD控制
130123_CR_CH5_H23 1 A.Conservative44克07 295119 Tbx5_rs61931008.5 GG
2012年7月11日2 5 ASD控制
120711_CR_CH5_H12 1 A.Conservative42 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#的相同文件。我希望這是明確的,讓我知道它不是。謝謝。
能否請您用一些輸入以及預期的輸出更新您的問題,因爲這會使您更容易回答您的問題?歡迎來到SO BTW :-) – 2013-03-04 20:41:43
'wc -l> file | awk ...'管道的一部分顯然是錯誤的;你的意思是'wc -l>文件; awk ...'而不是?你不能重定向到一個文件並同時繼續管道(除非像'wc -l | tee file | awk ...',如果這是你真正想要的東西)。 – tripleee 2013-03-04 21:10:20
不幸的是,你很難理解你想要做什麼,但是至少有一個可疑的事情正在進行:你說你是......在兩個領域($ 5和$ 0)做兩次單獨的搜索您只需打印$ 0和$ 5,您的搜索就會在$ 19 _both_次的字段中運行。編輯:沒有發現上面評論中提到的'>'問題 - 猜測那是你的主要問題。 – mikyra 2013-03-04 21:13:16