根据值范围将awk结果排序到多个文件中

绝望的人

我有以下数据,可能分布在多个输入文件中:

colB1:colB2:colB3:$130.00:...
colC1:colC2:colC3:$83.00:...
colD1:colD2:colD3:$80.00:...

我的目标是将输入的每一行的前两列写入到输出文件中,该文件的名称包含以$ 10开头的数字。

因此,对于上面的输入,我将有两个输出文件,一个包含两行,另一个具有一个:

balance-80.out
===
colC1:colC2
colD1:colD2

balance-130.out
===
colB1:colB2

我当前的尝试如下所示:

#!/bin/bash
for ((value_1=90; value_1<200; value_1+=10)); do
   awk -F: \
     -v var=$value_1 \
     -v var1=$((value_1+10)) \
     '{ sub(/\$/, "", $4) }
      ($4+0) >= var && ($4+0) < var1 { print $1":"$2 }' \
     *.txt > balance_$value_1.txt
done

这行得通,但是显然很笨拙。如何一次完成?

查尔斯·达菲

几点:

  • 您可以从中创建输出文件awk-高质量的awk实现将自动缓存文件描述符,从而使输出文件在各行之间保持打开状态(类似的Shell脚本不会这样做)
  • 模算术是用于选择文件名作为任何给定值的适当存储桶的适当工具。

因此:

awk -F: -v min=80 -v max=200 '
  { sub(/\$/, "", $4); val = (0 + $4) }
  val >= min && val < max {
    print $1 ":" $2 >("balance-" (val - (val % 10)) ".out")
  }
' *.txt

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

根据文件名将文件排序到多个目录中?

按值范围将Pandas DataFrame复制到多个文件中

DocumentDB将结果按值排序到数组中

将多个值/结果集存储到Java bean中

fgrep:将结果排序到文件

根据文件名中的日期将文件排序到文件夹中?

如何根据承诺解析将承诺的结果手动输入到范围变量中?

根据文件中Hadoop中的值排序

根据条件替换值,并使用AWK比较多个文件中的值

Windows批量复制根据部分名称将文件夹排序到文件夹中

根据EXIF日期将文件排序到子文件夹中

根据值范围将值添加/合并/变异到列

将多个awk语句的结果存储在同一文件中

根据多个列中的条件将值从df输入到新变量中

将多个文件传递到awk时确定文件的开始

Oracle将值排序到列中

将文件中的最高到最低排序

将打印输出重定向到awk中的多个文件

如何将awk的输出定向到指定目录中的多个单个文件

如何根据复选框的值将数据存储到多个MySQL表中?

根据 id 折叠数据框,将变量的多个值存储到列表中

Shell:将多个结果(md5sum)汇总到一个文件中

根据数值范围替换数据框的多个列中的值

Powershell-读取单个文本文件,并根据行中的文本将内容排序为多个文件

在Windows中使用python根据时间戳按排序顺序将多个日志文件合并到单个日志文件中?

如何根据多个因素对 Scala 中的“映射”值进行排序?

如何在lua中根据多个值对表进行排序?

根据范围将日期时间分类到新列中

根据列值将文件拆分为多个文件