繁体   English   中英

需要使用Powershell从CSV中的行中删除特定部分

[英]Need to remove specific portion from rows in a csv using powershell

我有一个具有两列和多行的csv文件,其中包含具有文件夹位置及其相应大小的文件的信息,如下所示

"Folder_Path","Size"
"C:\MSSQL\DATA\UsersData\FTP.txt","21345"
"C:\MSSQL\DATA\UsersData\Norman\abc.csv","78956"
"C:\MSSQL\DATA\UsersData\Market_Database\123.bak","1234456"

我想要做的是从csv中的每一行中删除“ C:\\ MSSQL \\ DATA \\”部分,并从UsersData开始将所有文件夹数据保留下来,并保留所有其他数据,因为此信息是重复的。 所以我的csv应该在下面这样。

"Folder_Path","Size"
"UsersData\FTP.txt","21345"
"UsersData\Norman\abc.csv","78956"
"UsersData\Market_Database\123.bak","1234456"

我正在运行的如下

Import-Csv ".\abc.csv" |
    Select-Object -Property @{n='Folder_Path';e={$_.'Folder_Path'.Split('C:\MSSQL\DATA\*')[0]}}, * |
    Export-Csv '.\output.csv' -NTI

任何帮助表示赞赏!

看起来像一个简单的字符串替换工作

Get-Content "abc.csv" | foreach { $_.replace("C:\MSSQL\DATA\", "") | Set-Content "output.csv"

要么:

[System.IO.File]::WriteAllText("output.csv", [System.IO.File]::ReadAllText("abc.csv" ).Replace("C:\MSSQL\DATA\", ""))

这应该工作:

Import-Csv ".\abc.csv" |
    Select-Object -Property @{n='Folder_Path';e={$_.'Folder_Path' -replace '^.*\\(.*\\.*)$', '$1'}}, Size |
        Export-Csv '.\output.csv' -NoTypeInformation

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM