gpt4 book ai didi

linux - 如何在子文件的第 2 列中 grep 包含值范围(-6 到 -7)的文件名?

转载 作者:太空宇宙 更新时间:2023-11-04 11:46:41 26 4
gpt4 key购买 nike

我有 5000 个目录(ligand_0001 到 ligand_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

这是 ligand_0005 文件夹中的子文件 (log.txt)。我只想要文件夹的名称,因为它在第 2 列中包含 -6 到 -7 的值(即 ligand_0005)

最佳答案

这是一个小的 awk 脚本,可以一次性扫描所有文件。

script.awk

BEGINFILE{ # on every file
pathPartsLen = split(FILENAME,pathParts, "/"); # split path to its parts into arry pathParts
currentDir = pathParts[pathPartsLen - 1]; # find the current parent dir
}
$2 ~ "^-[67]" { # match 2nd field to start with -6 or -7
print currentDir;
nextfile; # skip the rest of the file, goto next file
}

运行:

awk -f script.awk $(find ligand_* -name log.txt)

解释:

find ligand_* -name log.txt : 列出目录 ligand_* 中的所有 log.txt 文件

关于linux - 如何在子文件的第 2 列中 grep 包含值范围(-6 到 -7)的文件名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57407694/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com