bash脚本shell:如何使用与文件名相对应的变量嵌套到for循环中

问题描述 投票:-1回答:1

我有很多目录,它们的名称为:

Cl_GG_Omega_m_step_1e-01_der_15
Cl_GG_Omega_m_step_2e-01_der_15
Cl_GG_Omega_m_step_2e-01_der_15
Cl_GG_Omega_m_step_1e-08_der_15
Cl_LL_Omega_m_step_1e-08_der_15
Cl_GL_Omega_m_step_1e-08_der_15
Cl_GG_Omega_m_step_1.1229481712787273e-08_der_15
Cl_LL_Omega_m_step_1.1229481712787273e-08_der_15
Cl_GL_Omega_m_step_1.1229481712787273e-08_der_15
Cl_GG_Omega_m_step_1.2610125953782405e-08_der_15
Cl_LL_Omega_m_step_1.2610125953782405e-08_der_15

我想获取目录名称(完整),该目录名称的值出现在Òmega_m_step_der_15之间,并且低于临界值(例如,下面的cutoff=0.01:]

为此,我尝试做:

for i in $(ls --color=never -d Cl_*Omega_m_step_*); do
    for j in $(echo $i); do
        sed 's/.*_step_\([0-9].[0-9]*\)_der_15/\1/g' "$j" | awk -v cutoff=0.01 '{if ($1 < cutoff) print "$j"}'; 
    done;
done

这里的困难是我想获取整个目录名称,这就是为什么我使用了双重for循环:问题是我不知道嵌套循环$j目录名称(即将出现从for j in $(echo $i),特别是从awk -v cutoff=0.01 '{if ($1 < cutoff) print "$j"}'命令打印?

如果有人有解决方案,那将是很好。

bash awk sed
1个回答
2
投票
condition condition { print } { if ( condition ) print }

对于此示例:

awk -F_ '$6<0.01'
awk -F_ '$6<0.01 { print }'
awk -F_ '{ if ($6<0.01) print }'
© www.soinside.com 2019 - 2024. All rights reserved.