Powershell / Perl:将多个 CSV 文件合并为一个?

2024-03-05

我有以下 CSV 文件,我想将它们合并到一个 CSV 中

01.csv

apples,48,12,7
pear,17,16,2
orange,22,6,1

02.csv

apples,51,8,6
grape,87,42,12
pear,22,3,7

03.csv

apples,11,12,13
grape,81,5,8
pear,11,5,6

04.csv

apples,14,12,8
orange,5,7,9

期望的输出:

apples,48,12,7,51,8,6,11,12,13,14,12,8
grape,,,87,42,12,81,5,8,,,
pear,17,16,2,22,3,7,11,5,6,,,
orange,22,6,1,,,,,,5,7,9

任何人都可以提供有关如何实现这一目标的指导吗?最好使用 Powershell,但如果更容易的话,也可以使用 Perl 等替代品。

谢谢潘蒂克,你的代码的输出接近我想要的:

apples,48,12,7,51,8,6,11,12,13,14,12,8
grape,87,42,12,81,5,8
orange,22,6,1,5,7,9
pear,17,16,2,22,3,7,11,5,6

不幸的是,当 CSV 文件中不存在该条目时,我需要使用“占位符”逗号,例如橙色,22,6,1,5,7,9 而不是橙色,22,6,1,5,7,9

更新:我希望按照文件名的顺序解析这些内容,例如:

$myFiles = @(gci *.csv) | sort Name
foreach ($file in $myFiles){

问候 特德


这是我的 Perl 版本:

use strict;
use warnings;

my $filenum = 0;

my ( %fruits, %data );
foreach my $file ( sort glob("*.csv") ) {

    $filenum++;
    open my $fh, "<", $file or die $!;

    while ( my $line = <$fh> ) {

        chomp $line;

        my ( $fruit, @values ) = split /,/, $line;

        $fruits{$fruit} = 1;

        $data{$filenum}{$fruit} = \@values;
    }

    close $fh;
}
foreach my $fruit ( sort keys %fruits ) {

    print $fruit, ",", join( ",", map { $data{$_}{$fruit} ? @{ $data{$_}{$fruit} } : ",," } 1 .. $filenum ), "\n";
}

这给了我:

apples,48,12,7,51,8,6,11,12,13,14,12,8
grape,,,,87,42,12,81,5,8,,,
orange,22,6,1,,,,,,,5,7,9
pear,17,16,2,22,3,7,11,5,6,,,

So do 你有一个错字对于葡萄或我误会了什么?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Powershell / Perl:将多个 CSV 文件合并为一个? 的相关文章

  • powershell stdin 管道和重定向

    你好 我一直在制作一个小的跨平台脚 本 我可以将其卷曲并通过管道传输到bash和Powershell中 基本思想是服务器向解释器发送一个命令 然后它给出一个命令将所有输出重定向到标准输出 bash 中的一个例子是 some commands
  • 如何将 Perl 转换为 C?

    有没有可用的工具可以将 Perl 源代码转换为 C 源代码 什么平台都可以 对此的规范答案是MJD 的 为什么不将 Perl 翻译成 C http www perl com pub a 2001 06 27 ctoperl html
  • 你能挽救我的负面回顾示例来传达数字吗?

    在 高级正则表达式 一章中掌握 Perl http oreilly com catalog 9780596527242 我有一个损坏的示例 我无法找到一个很好的修复方法 这个例子可能为了自己的利益而试图变得太聪明 但也许有人可以帮我解决它
  • 填充 datagridview

    我正在开发一个表单 它将在所有连接的驱动器中搜索 PST 文件 我可以使用以下命令让它工作 Get PSDrive PSProvider filesystem get childitem root include pst r select
  • 如何使用 Perl 分割文本文件并将其存储到二维数组中?

    230215 01 16 2000 57533 0 1045403 0 0 217623 230215 01 18 2000 77659 0 1045403 0 0 217624 230215 01 25 2000 76583 0 1045
  • 将变量传递给 Start-Job

    我必须在这里遗漏一些非常简单的东西 这是一个非常基本的脚本来说明我正在尝试的内容 Computers comp1 comp2 ScriptBlock New Item C Temp C txt Force Foreach C in Comp
  • Import-Csv - 成员已存在问题

    我必须将多个 CSV 文件合并为一个文件 每个 CSV 都有一个标题 其中一列标题是相同的 理想情况下 最终文件 all out csv 必须有一个标头 我运行 PowerShell 代码 Import Csv out 1 result c
  • Pester 没有捕获抛出的错误

    当我运行以下纠缠测试时 我希望它能够捕获预期的错误 但事实并非如此 但是 当我使用不同的函数和不同的 throw 语句运行测试时 它会起作用 纠缠测试 Describe Remove GenericCredential Function T
  • 有没有办法在 MS Windows(Powershell 或 CMD)的 ripgrep 中转义引号?

    我想找一个字符串 Hello Hello 以双引号开头 在文本文件中使用ripgrep 通常 在 Bash 或 ZSH 中 这可以通过用反斜杠转义或用单引号括起来来实现 rg Hello rg Hello 然而 在 MS Windows P
  • 当一组凭据下的计划任务启动的进程在另一组凭据下运行另一个程序时,Windows 是否有限制

    所以我有一个简单的例子 其中我有应用程序 A 它对用户 X 本地管理员 有一些硬编码的凭据 然后它使用硬编码的绝对路径启动带有这些凭据的应用程序 B A 和 B 以及 dotnet 控制台应用程序 但是它们不与控制台交互 只是将信息写入文件
  • 在 PowerShell 中显示 Unicode 表情符号

    我想在 PowerShell 中显示像 U 1F4A9 这样的 Unicode 表情符号 我知道这仅在 ISE 控制台内有效 但我不知道如何操作 到目前为止我尝试过的 CharBytes System Text Encoding Unico
  • 快速 Perl signint 处理程序

    收到 Ctrl C 时处理程序清理的最方便 最清晰的方法是什么 例如 当我的套接字服务器以这种方式被终止时 TCP 套接字永远不会关闭 我想要一个很好的衬里 我可以将其放在程序的顶部来设置 sigint 处理程序 或类似 atexit 的东
  • Perl 和 Selenium::远程::驱动程序

    再次编辑 我在弗吉尼亚州北部某处的 AWS 上有一台服务器 这是我的监控服务器 我从另一个状态 ssh 进入这个 Ubuntu 服务器来进行系统管理 我想在这台服务器上进行 Web 自动化测试 它将测试互联网上的 Web 应用程序 点击 U
  • 为什么我的 Apache2::Log 输出用 \n 替换换行符?

    我在 apache2 mod perl 下设置了多个虚拟主机 我用的是ErrorLog指令为每个虚拟主机获取单独的错误日志 仅当我使用 Apache2 Log 时 这才按预期工作 警告 只会记录到常规错误日志中 这样就可以了 最后 但还存在
  • 如何使用 PowerShell 中的凭据从本地复制到远程位置?

    我是 PowerShell 的新手 我有用户名和密码来访问远程位置的共享文件夹 I need 复制文件foo txt从当前位置到 Bar foo myCOmpany com logs在为以下内容编写的 PS1 脚本中Powershell v
  • BASH:将数据从平面文件导入模板

    我有一个平面记录文件 每行有 33 行 我需要将此文件格式化为模板中的规格 模板为 DOS 格式 源文件为 NIX 格式 该模板具有必须遵守的特定缩进和间距 我想到了几个选择 BASH 与经典的 nix 工具 sed awk grep 等
  • Perl 程序如何知道在哪里可以找到包含它使用的 Perl 模块的文件?

    如果我的 Perl 程序使用 Perl 模块 它将如何确定在哪里找到包含模块代码的文件 例如 如果程序包含 use MyModule1 Example 1 use This Here MyModule2 Example 2 它会看起来在哪里
  • 如何彻底删除 Perl 中的包?

    如何在 Perl 中彻底删除一个包 这不仅意味着包变量 还意味着 Perl 更新以处理继承更改和其他事情的任何魔术表 这个简单的测试 use warnings use strict use Test LeakTrace use Symbol
  • PowerShell 中的 ProcessStartInfo 和进程 - 身份验证错误

    我有使用 ProcessStartInfo 和 Process 调用另一个脚本并返回该脚本的输出的代码 不幸的是 我遇到了错误 并且不确定如何解决这些问题 script1 ps1 abc args startInfo NULL proces
  • 如何在 Perl 脚本中加密或隐藏密码?

    我正在研究 Perl 脚本 它使用Expect http search cpan org dist Expect通过 telnet 登录到远程计算机 不要问 必须使用 telnet 我还根据需要执行 perforce p4 登录操作 并使用

随机推荐

  • 如何同时发出多个axios请求?

    此时我有一个网页 其中正在发出一长串 Axios POST 调用 现在 请求似乎是并行发送的 JavaScript 在收到结果之前继续发送下一个请求 然而 结果似乎是一一返回的 而不是同时返回的 假设对 PHP 脚本的一次 POST 调用需
  • 如何将浮动操作按钮集成到带有工具栏的线性布局中

    我有以下列表视图 我想向其中添加浮动操作按钮
  • NSWindow 到底什么时候会变成圆角?

    我发现了几个类似的问题 但没有完全相同的问题 有些比有问题的操作系统更旧 有些正在做疯狂的事情 比如完全自定义窗口 我发现没有人提供有关如何使完全普通的窗口正常工作的说明 从 OS X Lion 开始 标准窗口都有圆角 不幸的是 我在我的应
  • 异常:未找到 Jupyter 命令 `jupyter-notebook`,Windows

    因此 在安装 VSCode 和 Python 3 7 4 64 位 之后 我真的很难让 python 交互式 工作 我已经在 VScode 中安装了 Python 扩展jupyter and jupyter lab但我不断收到错误 异常 J
  • PyCharm 社区版中的 中出现意外标记

    我是 PyCharm 的新手 但我逐渐喜欢上了它 我的屏幕上出现红色下划线错误是 意外的令牌 为什么 PyCharm 会显示它 我无法理解 当您没有在 Pycharm 的设置中启用 Django 时 通常会发生这种情况 要解决该问题 在 P
  • ASP.Net:在编辑和删除时从 GridView 获取 DataKey

    我正在使用一个GridView控件数据绑定到List从实用程序方法返回的对象的数量 这GridView控件将其中一列设置为其 DataKey 当一行是Selected 它会触发 Selected 事件处理程序 我可以使用myGridView
  • javascript 检测桌面触摸和鼠标支持

    触控设备应如何区分纯触控设备和带有鼠标的设备 就像今天的一些笔记本电脑 需要在应用程序中给予所有鼠标功能优先级 并且如果运行应用程序的设备仅支持触摸 则需要更改功能 如果触摸设备也有鼠标指针 逻辑建议应用程序应将该设备视为普通桌面 并且也可
  • array.map() 中花括号的含义[重复]

    这个问题在这里已经有答案了 我有一个 map 改变的函数isActive对象的属性值data大批 然而 用大括号包裹它会返回未定义的结果 而用括号包裹它或不包裹它会返回更新后的值 大括号用作箭头函数中的包装器 但它对于 map 的工作方式是
  • zod TypeError:无法读取未定义的属性(读取“_parse”)

    我有一个使用 Zod 的 Vite 库 我想解析配置 我的文件夹结构与配置对象结构类似 index ts文件始终导出其自己目录中的所有文件及其子目录中的所有内容 例如export from subDir 所以根文件导出 整个库 以下设置显示
  • 批处理文件将部分文件名移动到部分文件夹名称字符串

    我有一个充满文件夹的目录 这些文件夹以这种方式命名 ABC L2 0001 2ABC12345 0101 xxxx 我需要将许多以此方式命名的文件移动到与文件的前 9 个字符匹配的文件夹中 2ABC12345 0101 xyxyxyx yx
  • 如何在 MSBuild 中并行运行任务

    除非我严重误解了 MSBuild 否则任务将按照它们在 目标 节点中出现的文档顺序执行 我希望能够指定两个任务 例如 xcopy 任务 可以并行运行 我期待有一个 并行 任务或其他任务 尝试 MSBuild 扩展包中的新并行任务 http
  • 使用 .htaccess 更改 url 中的目录

    我正在尝试更改地址栏中显示的网址mysite com blog wedding hair to mysite com services wedding hair using htaccess 使用以下答案 https stackoverfl
  • 带负值和高度的 CSS 相对定位

    我试图对 DIV 元素进行负向定位 在示例中是 content 但我的问题是 div 的容器 wrapper2 获得了太多高度 实际上是 content 给出的高度 但正如我 我将内容向上移动 我想相应地降低 wrapper2 的高度 在这
  • 删除 MVC 中的浏览器自动完成功能

    我目前正在尝试删除用户浏览器完成的表单自动完成功能 这可能会导致一些关键行为 因为它填充了密码字段 我已经将自动完成属性添加到我的所有文本框字段中 但是当我尝试使用 Firefox 时 它仍然会将我当前的登录信息加载到字段中 有谁知道如何解
  • JScrollPane 未添加到 JTextArea

    我看到了几个类似这个问题的问题 但我无法解决这个问题 我无法得到JScrollPane可见于JTextArea 谁能指出我哪里做错了 谢谢 package experiement import java awt Dimension impo
  • openlayers 策略:ol.loadingstrategy.bbox 不适用于 wfs 功能

    我尝试使用此代码使用 openlayers 4 最大 1000 可视化 wfs 中的地块 但是视图地图的每次移动或缩放时范围不会改变 或者新功能不会加载到图层中 var parcellaireSource new ol source Vec
  • MinGW GCC:“未知转换类型字符'h'”(snprintf)

    好的 我在 Windows 7 上使用 MinGW GCC 4 6 2 编译 C 文件时遇到了一个奇怪的问题 该文件包含以下 C 代码 include
  • 无法访问在 docker 内创建的 docker-compose 容器

    我有一个docker compose yml在端口上启动简单 HTTP 回显服务的文件8800 version 2 services echo server image luisbebop echo server container nam
  • CSS 比较运算符

    我需要定位占其父 div 80 以上的 div 作为进度条 考虑到我们可以瞄准specificCSS 宽度 data width 80 我们如何瞄准比较 这做到了not在 Firefox 或 Chrome 中工作 data width gt
  • Powershell / Perl:将多个 CSV 文件合并为一个?

    我有以下 CSV 文件 我想将它们合并到一个 CSV 中 01 csv apples 48 12 7 pear 17 16 2 orange 22 6 1 02 csv apples 51 8 6 grape 87 42 12 pear 2