使用 AWK 将多个文件中的列添加到 csv 表

2023-12-31

我希望通过使用 AWK 从多个文件中获取值来构建 csv 表。我让它处理两个文件,但我无法扩展它。我目前正在获取第二个文件的输出,并附加第三个文件,依此类推。

以下是示例文件:

#file1  #file2  #file3  #file4
100     45      1       5
200     23      1       2
300     29      2       1
400     0       1       2
500     74      4       5

这就是目标:

#data.csv
1,100,45,1,5
2,200,23,1,2
3,300,29,2,1
4,400,0,1,2
5,500,74,4,5

这就是我正在做的工作:

awk 'FNR==NR { a[FNR""] = NR", " $0","; next } { print a[FNR""], $0}' $file1 $file2

结果是:

1, 100, 45
2, 200, 23
3, 300, 29
4, 400, 0
5, 500, 74

但是当我尝试让它处理 3 个或更多文件时,如下所示:

awk 'FNR==NR { a[FNR""] = NR", " $0","; next } { print a[FNR""], $0; next } { print a[FNR""], $0}' $file1 $file2 $file3

我得到这个输出:

1, 100, 45
2, 200, 23
3, 300, 29
4, 400, 0
5, 500, 74
1, 100, 1 
2, 200, 1 
3, 300, 2
4, 400, 1
5, 500, 4

在第一列中,行计数重新开始,第二列也重复第一个文件。在第三列中,它将第三个及后续文件添加为新行,我希望这些文件应添加为列。不需要新行。

任何帮助将不胜感激。我从 Stack Exchange 学到了大部分 AWK,并且我知道我在这里遗漏了一些基本知识。谢谢,


正如已经回答的那样,你可以使用paste。要获得以逗号分隔的行编号的准确输出,您可以执行以下操作

paste -d, file{1..4} | nl -s, -w1
  • -s,将数字分隔符设置为逗号(默认为制表符)。
  • -w1设置数字宽度,因此没有初始空格(因为默认值更大)

另一种解决方案是awk

awk    '{a[FNR]=a[FNR] "," $0} 
    END {for (i=1;i<=length(a);i++) print i a[i]}' file{1..4}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 AWK 将多个文件中的列添加到 csv 表 的相关文章

随机推荐

  • 在数组映射中转换某些属性名称的优雅方法

    认为 let A x x y y x x y y 我知道我可以将这个数组转换为一个新数组 并重命名y像这样的财产 A map o gt v o y v y v y 我可以使用扩展来获取所有现有属性以及一个新的 经过转换的属性 如下所示 A
  • Yii Booster 日期选择器无法正常工作

    我有一个与 Yii booster datepicker 相关的问题 设想 p class help block Fields with span class required span are required p
  • 如何避免 C++ 中两个库的变量/函数冲突

    我有类似的情况 如下所述 我有一个头文件first h它有一个功能 char getName 以及相关的cpp文件first cpp有函数定义 char getName return first 和第二个头文件 secondary h 它具
  • Xcode 持续集成:未找到配置的目标

    我已将本地存储库克隆到 Xcode 服务器 并创建了一个机器人来在每次提交时运行测试 但在集成时 它给出了构建服务问题 不再支持或找不到配置的目标 我也无法从日志中找到任何错误 Oct 19 12 32 08 1397
  • 如何查找字符串中的循环/重复?

    我需要检测字符串中的循环 序列并返回第一次出现的位置 我应该怎样去做呢 例子 2 0 5 3 1 5 3 1 5 3 1 第一个发生的序列是5 3 1 没有规则 例如 序列可以是字符串长度的一半 5 3123 1231 231 31 231
  • 从 R 中的嵌套列表中提取内容

    我将客户数据存储在 R 中的嵌套列表中 其方式与此相同 myinventedlist lt list LOLETE list Name LOLETE location Huelva Employees 22 SM eJeK1 Groups
  • Keras 不使用 Theano

    1 我创建一个虚拟环境 mkvirtualenv kerasTH 2 我使用安装keraspip install keras 3 这就是输出pip list Package Version h5py 2 10 0 joblib 0 16 0
  • 如何在 Andengine Base 游戏活动中使用比率分辨率策略时覆盖 onSetContentView

    我正在开发 学习构建 一款游戏andengine GLES2 我在用基础游戏活动 并且我覆盖了setContent查看放置我的 admob 广告的视图 除了解决政策之外 一切都正常 比率决议政策是我正在使用的那个CAMERA WIDTH 8
  • gdb:退出程序而不退出gdb

    我正在使用 gdb 调试程序 首先 我load我的可执行文件 然后我continue运行程序 我有时想中断程序的执行 所以我这样做Ctrl C 我的问题是这关闭了both我的程序和gdb 如何在不退出 gdb 的情况下退出程序 您是否尝试过
  • rufus 调度程序未在生产中运行

    我有一个在 nginx 和乘客下运行的 Rails 服务器 我的sheduler rb看起来像这样 require rufus scheduler my awesome job Rufus Scheduler new my awesome
  • 有没有办法在结果查询中显示“是”或“否”而不是 0 或 1? [复制]

    这个问题在这里已经有答案了 我正在尝试创建一个查询 当我选择一行且一列为 0 时 它显示 否 如果为 1 则显示 是 这是一个示例表 SELECT FROM NUMBERS RESULT PRODUCT HAS APPLES 0 GRAPE
  • 当2的幂时如何将除法变成按位移位?

    我有以下需要经常做的划分 int index pos 64 在 CPU 级别 除法可能会很昂贵 我希望有一种方法可以通过按位移位来做到这一点 我还想了解如何从除法到移位 换句话说 我不想只记住按位表达式 int index pos gt g
  • 重命名后项目崩溃

    如果我在 XCode 中的导航器视图中更改 iOS 项目的名称 Xcode 4 中的 Project gt Rename 相当于什么 https stackoverflow com questions 6077876 what is the
  • 如何使用 jQuery animate() 方法使 div 左右移动?

    请看一下这个 http jsfiddle net tmPfV http jsfiddle net tmPfV 如果您单击右侧 则该框将向右移动 如果您单击左侧 则该框将向左移动 但是 如果您再次单击右键 则什么也没有 我怎样才能让它左右移动
  • 尝试解码数据(将 Abs 导出到 MySQL)

    我有数据库表 DROP TABLE translation en lt CREATE TABLE translation en lt id INTEGER lt translation WIDEMEMO BLOBBlockSize 1024
  • 如何使用 Log4j 和 Storm Framework 将日志写入文件?

    我在 Storm 中使用 log4j 记录到文件时遇到了一些问题 在提交我的拓扑之前 即在我的主要方法中 我编写了一些日志语句并使用以下方法配置了记录器 PropertyConfigurator configure myLog4jPrope
  • 组装键盘IO口

    我看过以下内容topic https stackoverflow com questions 219120 x86 assembly protected mode keyboard access 我有兴趣通过 IN OUT 指令联系键盘并设
  • Spring Web Flow - 如何使用对话范围中已有的值设置单元测试?

    我正在开发一个使用 Spring Web Flow 2 0 的项目 我正在尝试对从决策状态开始的流程进行单元测试 决策状态检查位于conversationScope 我不知道如何将值插入到conversationScope用于单元测试 我努
  • 根据系统动态判断整数类型(c++)

    我正在编写一个程序 以每 32 位 即一次 4 个字节 为单位将数据存储到文件中 我在64位Windows系统中编写代码 但我使用的编译器是32位 mingw32 在当前系统中 int和long的大小是相同的 都是32位 4字节 我目前正在
  • 使用 AWK 将多个文件中的列添加到 csv 表

    我希望通过使用 AWK 从多个文件中获取值来构建 csv 表 我让它处理两个文件 但我无法扩展它 我目前正在获取第二个文件的输出 并附加第三个文件 依此类推 以下是示例文件 file1 file2 file3 file4 100 45 1