例如,我在一个制表符分隔的文本文件中包含以下两列:
blah ABC_DE_23154_e53G_12
blah DEF_GH_23165_f35H_36
blah CED_BF_56412_c56T_21
我使用以下 awk 脚本来提取与第二列中的第三个数字匹配的行,该数字落在第二个下划线之后的特定范围(23153 和 23167 之间)(这不起作用):
awk -F "_" '$2>23153 && $2<23167' *.txt >> output.txt
“output.txt”文件内的输出应该是:
blah ABC_DE_23154_e53G_12
blah DEF_GH_23165_f35H_36
我有大约 600 个文本文件,每个文件中有大约 8000 行数据。
谢谢,等离子33
答案1
我认为第一个问题出$2
在您的 awk 脚本中,因为 with$2
是第二列(DE、GH、BF,...),而不是您要比较的数字所在的第三列。
然后,应该有一个条件,以及如果满足条件你想要做什么。
awk -F'_' '($3>23153 && $3<23167){print}' *.txt >> output.txt
中有一个条件()
和 中有一个动作{}
。
编辑:
正如我在评论中提醒的那样,{print}
action 是默认的,因此您可以进一步简化 awk 脚本:
awk -F'_' '($3>23153 && $3<23167)' *.txt >> output.txt
答案2
尝试使用Python
k=open('filename','r')
for i in k:
k=i.strip().split('_')[2]
if int(k) > 23153<23167:
print i.strip()
输出
blah ABC_DE_23154_e53G_12
blah DEF_GH_23165_f35H_36
blah CED_BF_56412_c56T_21