linux - 如何在其子文件的第 2 列中 grep 包含值范围(-6 到 -7)的文件名?
问题描述
我有 5000 个目录(ligand_0001 到配体_5000)。每个都包含作为 log.txt 的子文件名,其中包含第 2 列中的分数。我想提取所有目录名称 (ligand_*),它们的日志文件在第二列中包含 -6 到 -7 分数。
1 -6.1 0.000 0.000
2 -6.1 2.657 3.713
3 -5.9 26.479 28.383
4 -5.9 27.924 30.549
5 -5.8 4.579 8.657
6 -5.8 26.841 28.725
7 -5.8 25.192 27.089
8 -5.6 3.119 4.640
这是配体_0005 文件夹中的子文件 (log.txt)。我只想要文件夹的名称,因为它在第 2 列中包含 -6 到 -7 值(即配体_0005)
解决方案
使用 awk 确定第二列中是否存在数字,遍历文件夹并检查每个文件夹的 log.txt
ARRAY=()
for i in ligand_*
do
if [[ ! -z $(awk '$2>=-7 && $2<=-6' ${i}/log.txt) ]]
then
ARRAY+=("${i}")
fi
done
printf '%s\n' "${ARRAY[@]}"
推荐阅读
- java - 尝试在 Windows 10 机器上运行时出现 Maven 错误
- java - 考虑到Hashmap,如何在for循环中使用额外的检查?
- r - 即使我不知道唯一值是什么,如何获取数据框列中每个唯一值的计数?
- node.js - Node.js Sequelize 模型,其中一个字段是一组对象
- excel - VBA Excel 清除
- javascript - 如何转义 Javascript 模板字符串的属性?
- express - 如何用 jest 指定运行规范文件的顺序?例如:首先运行 spec.fille1.js 然后 spec.file2.js 等
- python - Pandas:如何在保持空值的同时删除越界时间戳?
- android - 活动结束
- android - Flutter Spotify API 身份验证