小编Ali*_*Ali的帖子

在 awk 中的模式内使用 shell 变量

我有一个带有制表符分隔列的文本文件,我想使用 awk 处理它。

这是此类文件的示例:

size=1\tname=foo\tweight=1.2
weight=2.5\tname=bar\tsize=2
Run Code Online (Sandbox Code Playgroud)

我想要实现的是将内容类似于$field_name=<number>小数点后四位的列中的数值标准化,其余部分保持原样。这$field_name是一个传递给 awk 的 shell 变量,我想在正则表达式中使用它的值。

这是一个片段(当然不起作用)。我对修复以下 awk 脚本中的第 5 行特别感兴趣,而不是使用其他工具(例如 sed、perl、python 等)的解决方案。

$ cat "${file}" \                                       # 1
    | awk -F "\t" -v field_name="${external_var}" '     # 2
      {                                                 # 3
        for (i = 1; i <= NF; i++) {                     # 4
          if ($i ~ /$field_name=[0-9]*.?[0-9]+/) {      # 5
            split($i, kv, "=")                          # 6
            $i = sprintf("%s=%.4f", kv[1], kv[2])       # 7
          }                                             # 8
        }                                               # 9
        print $0                                        # 10 …
Run Code Online (Sandbox Code Playgroud)

awk

1
推荐指数
1
解决办法
54
查看次数

标签 统计

awk ×1