linux - Awk:合并文件中的列

标签 linux bash scripting awk text-parsing

我有两个文件,我必须从两个文件中获取我需要的列并将它们合并在一起。我想使用 awk 来执行此操作。

因此,从 FileB 中我需要 $9->$12。如果 FileA 的 $4 与 FileB 的 $12 中的内容匹配,我需要 FileA 中的 $1、$2、$3、$5 和 $6。

这是我到目前为止所拥有的:

脚本.awk:

FNR==NR {
    blah = $12
    gsub(/"/,"",blah); gsub(/;/,"",blah);
    array[blah]=$9,$10,$11,$12  ## This breaks here
    next
}

{
    if ($4 in array) {
        print $1,"TransMap","Tcon",$2,$3,$5,$6,".",array[$4]
    }
}

我会像这样运行:awk -f script.awk fileB fileA 因此请注意,FileB 的 $12 并不是完全匹配 - 任何与 $4 的匹配都将采用以下格式:“$4”; (因此是 gsub)。我需要这种格式,而不是最终输出中 $4 中的格式,这就是我这样做的原因。

数组[blah]=$9,$10... 换行 awk(显然)。但我需要 FileB 中的所有 4 个字段 - 我该如何解决这个问题? awk 的在线说明不清楚。

最佳答案

尝试

 array[blah]=$9","$10","$11","$12

我只能猜测问题而没有看到数据。我猜你想得到用逗号连接起来的 $9-12。

关于linux - Awk:合并文件中的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15391422/

相关文章:

linux - Linux下如何写入CM108芯片的GPIO管脚?

linux - 如何在 Linux 中添加未在当前内核中编译的内核模块

bash - 将 sed 与命令行参数一起使用?

powershell - 如何使用PowerShell或VBScript获取正在运行的应用程序的列表

linux - 32 位守护进程可以在 64 位 linux 上运行吗

C程序在while循环中不保存到文件

regex - 如何使用 sed 从文件的第 n 行开始?

bash - 如何在 bash 中使用 declare -x

powershell - 使用 Powershell 为 Word 文档添加页眉和页脚

bash - #! 脚本可以用作解释器吗?散列线?