删除CSV中A列的前3个字符,跳过带空格的标题

zsohkypk  于 2023-01-06  发布在  其他
关注(0)|答案(1)|浏览(121)

我试图删除A列的头“员工ID”中的前3个字符。字符是EID后跟一串数字。另一列包含UName,也可能是EID后跟数字。我得到的是下面的内容,但它甚至不接近。

$CSV = Import-Csv "Export.csv" | Select -skip 1

$CSV |
  % { $_ -replace '^...' } |
  Export-Csv "ExportNEW.csv"

结果为无变化。

guicsvcw

guicsvcw1#

Import-Csv Export.csv |
  ForEach-Object { 

    # Update the 'Emp ID' property (column value)
    $_.'Emp ID' = $_.'Emp ID' -replace '^...'

    # ... update other column values analogously.

    # Pass the modified object (row) through.
    $_

  } |
  Export-Csv -NoTypeInformation -Encoding utf8 ExportNEW.csv
  • 我省略了Select -Skip 1,因为我不确定您是否真的想跳过第一个 data 行(Import-Csv不输出 header 行;那里的信息简单地用于基于列名来确定 * 属性名称 *,以用于数据行被解析成的对象。
  • 我已经将-NoTypeInformation-Encoding utf8添加到Export-Csv调用中,以便在 Windows PowerShell 中使用,默认情况下,它会发出通常不需要的 comment 行,并且默认为ASCII(!)编码;根据需要调整编码;注意,-Encoding utf8总是创建一个 * 带有 * BOM的文件。
  • PowerShell (Core) 7+中,这两个参数都不再是必需的,它不再发出这个注解行,并且(一致地)默认为UTF-8,尽管 * BOM较少 * UTF-8;如果确实需要BOM表,请使用-Encoding utf8bom

相关问题