csv - 重建 CSV 并使用字段值作为导出的文件名

标签 csv powershell powershell-2.0

我想从一行中读取一个字符串,然后将其放入一个变量中,该变量随后用作文件名。 该字符串位于 .csv 文件中的第二行末尾。由于不必要的标题,需要删除第一行。 还有‘;’旧 .csv 文件中使用的内容需要替换为真正的逗号“,”。 到目前为止,我已经得到了以下一段 PowerShell 脚本:

Powershell -命令“(gc file1.csv | select -skip 1) -replace ';', ',' | Foreach-Object{ $_ + ',' } | Out-File file2.csv”

代码说明:

gc file1.csv | select -skip 1 获取csv文件的内容。并从临时数组中删除第一行。

-replace ';', ',' 替换所有 ';'与“,”。

Foreach-Object{ $_ + ',' } 在所有行的末尾添加逗号(这是必要的)。

Out-File file2.csv 创建一个名为“file2.csv”的输出文件。

输入文件采用以下格式:(.csv 的前 2 行)

123.256.862;;0;568.153.135;12;0;;255.253.233

123.633.582;;0;568.588.533;12;0;;255.253.233

脚本生成的输出文件如下:(.csv 的前 2 行)

123.256.862,,0,568.153.135,12,0,,255.253.233,

123.633.582,,0,568.588.533,12,0,,255.253.233,

在 PowerShell 中编程时会出现以下问题:

  1. 如何将此代码编程为多行以提高可读性?

  2. 如何读取第二行的最后一个元素并将其放入变量中?

  3. 使用此变量作为名称生成新文件是否正确?我已经用虚拟变量尝试过这种方法,但它似乎不起作用。更具体地说:新文件名必须为 255.253.233.csv。

我已经在 google 上搜索了很多关于如何在 PowerShell 中初始化任何变量的信息,但仍然不清楚如何在之后准确地声明它。我希望我走在正确的解决方案道路上。非常感谢任何帮助。

最佳答案

您可以将 import-csv 与自定义 header (-headers) 结合使用,并使用 -delimiter 参数进行使用不同分隔符的导入/导出。 要保存,请使用 export-csv -path $filename (如果 $filename 已包含 .csv)或 export-csv -path $(".\$filename.csv").

编辑:也许可以发布输入文件的前 2(+) 行以获得改进的答案。

关于csv - 重建 CSV 并使用字段值作为导出的文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35918578/

相关文章:

powershell - PowerShell比较广告组,但仅显示这些内容

powershell - 如何在powershell中将多个表合并为一个表?

java - 如何查找文件是否为 CSV 文件?

php - 多个数据仅显示一次

c# - 如何自动设置邮件分类?

powershell - 使用 Powershell 和 Teamcity 部署云服务失败

powershell - 在 PowerShell 中将所有写输出通过管道传输到同一个输出文件

powershell - 查找角色位置并更新文件名

xml - 如何使用 expath 和 Xquery 获取 CSV 文件?

c# - 正则表达式用于删除逗号周围的空格(引用时除外)