这是我第一次发布堆栈溢出,主要是在搜索解决方案和阅读帖子之后。我想使用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