这是我第一次发布堆栈溢出,主要是搜索解决方案和阅读帖子。我正在尝试使用bash运行一个循环,所以我可以使用ext .u.clean对一堆不同的文件进行字符串搜索我想通过这些文件查看字符串“H#”或“h#” #为1-28,并输出到字符串中搜索到的数字的文件。我在两个字段($ 5和$ 0)中进行两次单独的搜索,我想将唯一匹配的总数输出到文件“temp”#。txt。在此之后,我想对文件中输入的两个数字进行一些数学运算。到目前为止,我已经走到了这一步:
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个“临时”#“。txt”文件,但输入不是正确的字数。我也不知道如何进行数学运算,我有文件中的数字。有人可以帮助我或指出正确的方向吗?谢谢你的帮助。
编辑:
以下是一些输入的内容:
112 E 03 294168 FBLN7_rs335586251.5 G G
01/23/2013 2 3 VSD控制130123_CR_CH5_H26 1 A.Conservative17 D 11 294319 FBLN7_rs335586251.5 G G
06/26/2012 2 3 VSD控制
120626_CR_CH5_H3 1 A.保守22 B 01 294703 FBLN7_rs335586251.5 G G
06/26/2012 2 2 VSD控制
120626_CR_CH5_H4 1 A.保守103 A 07 295033 FBLN7_rs335586251.5 G G
01/23/2013 2 1 VSD控制
130123_CR_CH5_H23 1 A.保守44 G 07 295119 Tbx5_rs61931008.5 G G
07/11/2012 2 5 ASD控制
120711_CR_CH5_H12 1 A.保守42 H 12 295201 JAG1_rs1232607.5 G G
07/11/2012 1 2 ASD控制
120711_CR_CH5_H12 1 A.保守
我试图在字段19(带有文本Tbx5_rs61931008.5。的字段)中找到多少次计数,每次出现H'#'时出现#为1-28,将该数字输出到a每个H#的单独文件。然后我想知道H#的这些匹配,字段5有多少个独特的场合,并将这个数字输出到每个H#的同一个文件中。我希望这很清楚,让我知道它不是。谢谢。
答案 0 :(得分:1)
对于您要实现的目标而言,这似乎有点复杂。我建议使用find
和grep
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
获取每个文件的总数。