bash - 如何在 bash 文件循环后使用增量命名输出文件?

标签 bash loops for-loop awk

我正在尝试使用 awk 命令处理一堆文件(五个)并使用增量命名输出文件。 输入文件的名称很复杂。我知道如何重用文件的基本名称来重命名输出,但我想简化文件名。

这是我的代码:

for f in *.txt; do
    for i in {1..5}; do
        echo processing file $f
        awk '
            { if ($1=="something" && ($5=="60" || $5=="61"|| $5=="62"|| $5=="63"|| $5=="64"|| $5=="65"|| $5=="66"|| $5=="67"|| $5=="68"|| $5=="69"|| $5=="70"))
            print   }' $b.txt>"file_treated"$i.txt
        echo processing file $f over
    done
done

我知道错误出现在第二行,因为我写的是针对第一个循环的每个值运行第二个循环。我希望第一个循环的每个值对应于第二个循环的一个值。

希望这已经够清楚了

最佳答案

怎么样:

i=0
for f in *.txt; do
    let i++;
    awk '$1=="something" && ($5 >= 60 && $5 <=70)' "$f" > file_treated"${i}".txt
done

我简化了您的 awk 命令并解决了您的各种引用问题。我还删除了 $b.txt,因为您只是重新创建了 $f。我留下了 echo $b 等,以防你真的想要它,但它可以很容易地用 echo "$f" 替换。

关于bash - 如何在 bash 文件循环后使用增量命名输出文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23549294/

相关文章:

c# - For 循环在完成后重复并返回 ArgumentOutOfRangeException

for-loop - 使用 route 53 记录遍历 terraform 中的对象 map

linux - 在多个目录中查找文件

linux - 为什么 Linux rm -rf 抛出无效参数错误?

使用通用函数的 Python numpy 网格转换

c# - 为什么这个循环无限工作

php - 如何在循环中创建换行符

linux - 如何将值传递给另一个代码以在 linux 中执行进程

linux - `find'如何计算文件的大小?

javascript - 获取 "each"内的内部标签元素