【问题标题】:Powershell Remove numbers from excel column leaving text in placePowershell从excel列中删除数字,保留文本
【发布时间】:2015-12-14 23:39:39
【问题描述】:

我想从 csv 文件的第 1 列和第 2 列中删除一些数字,但不是第 3 列。

基本上我需要删除六个数字和 - 即删除“000001 -”并从第 1 列和第 2 列中保留“OfficeFramework”,但保留所有其他文本。

我在 excel csv 文件中的数据是:

Column1                     | Column2                       | Column3
000001 - OfficeFramework    | 002924 - Edition              | Standard
000001 - OfficeFramework    | 002925 - Install Type         | Server
000001 - OfficeFramework    | 002926 - Version              | v4.3.00
000001 - OfficeFramework    | 002927 - Audit Trail Enabled  | FALSE

我需要它看起来像:

Column1         | Column2               | Column3
OfficeFramework | Edition               | Standard
OfficeFramework | Install Type          | Server
OfficeFramework | Version               | v4.3.00
OfficeFramework | Audit Trail Enabled   | FALSE

到目前为止我有:

get-content "H:\Compare\Results\test\servername_SystemInfo.csv" | 
    % { $_.split('*.-')[-1].trim()} | 
             set-content "H:\Compare\Results\test\new.csv"

但我只有两列返回,因为它删除了第 1 列并返回:

newcolumn1          | newcolumn2 
Edition             | Standard
Install Type        | Server
0                   |
Audit Trail Enabled | FALSE

感谢您的帮助,

【问题讨论】:

    标签: excel powershell csv


    【解决方案1】:

    如果您只是想删除号码,您可以使用-replace,例如:

    Get-Content yourFileName.csv | % { $_ -replace '\d*\s-\s', '' } | Set-Content yourFileName2.csv
    

    或者,如果它总是 6 位数,您可以将 * 替换为 {6}

    【讨论】:

    • 如果数字是第 2 列中的变量,这会起作用吗?
    • 这只是删除字符串中后跟 ` - ` 的每个数字实例 - 所以它应该。但是,我不知道您所指的第 2 列中的变量
    • 我的意思是在我的第 2 列中的数据示例中,它具有不同的起始数字,即 002924、002925 等。话虽如此,我已经尝试使用 {6} 而不是 * 和这可以满足我的需要,感谢您的帮助。
    • 您应该可以使用'\d*\s-\s''\d{6}\s-\s',两者的唯一区别是第一个查找任意数量的数字,直到找到-,而后者严格查找后跟 - 的 6 位数字。
    猜你喜欢
    • 2020-10-07
    • 2013-06-30
    • 1970-01-01
    • 2013-10-10
    • 2021-07-21
    • 1970-01-01
    • 1970-01-01
    • 2011-12-30
    • 1970-01-01
    相关资源
    最近更新 更多