Powershell替换重新格式化CSV

时间:2017-10-31 01:22:46

标签: regex powershell csv

我有一个csv,我想删除一些字符进行进一步处理。在使用regex -replace方法之前我已经多次这样做了,但这次它似乎弄乱了整个csv。我正在使用:

$Removed_Characters=$Good_CSV|%{$_ -replace "X",""}

而不是没有“X”字符的相同csv,它输出一系列数组,每行一个(即@{Name=Tom, ID=12}@{Name=Bill, ID=15} ...)。这根本不是我想要的,而不是我过去看到过的。我能以不同的方式做些什么?

2 个答案:

答案 0 :(得分:1)

看起来您正在尝试替换对象数组的任何属性中的字符串(来自import-csv),但您可能只是想要在单个值中替换字符串。

您提供的脚本是将每个对象转换为字符串,然后对该字符串值执行字符串方式替换。给你看起来像对象属性的哈希。

从CSV

中的特定字段替换字符串
@"
Name,ID
Tom,12
Joe,15
"@ | out-file test.csv
$CSVFile = import-csv test.csv 
$CSVFile | %{$_.name = $_.name -replace 'o','i'}
$CSVFile
#Name ID
#---- --
#Tim  12
#Jie  15

从CSV

中的任何字段替换字符串
$Properties = $CSVFile | get-member -membertype noteproperty | select -expand name
$CSVFile | %{
    $entry=$_; 
    foreach ($prop in $Properties) {
        $entry.$prop = $entry.$prop -replace 'o|1','i'
    }
}
$CSVFile
#Name ID
#---- --
#Tim  i2
#Jie  i5

请注意,替换所有属性上的值也会将所有这些值转换为字符串,因此您可能会失去保真度(日期等)。

祝你好运!

沙恩

答案 1 :(得分:0)

诀窍是使用<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <!DOCTYPE html> <html> <head> <title> Puzzle box </title> <link rel="stylesheet" type="text/css" href="css/ind.css"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> <script type="text/javascript" src="js/ind.js"></script> </head> <body> <div class="main_box"> <div class="big_box"> <div class="target">Tar</div> <div class="target1">1</div> <div class="target2">2</div> <div class="target3">3</div> <div class="target4">4</div> </div> <div class="btn" id="hello_1">btn 1</div> <div class="btn" id="hello_2">btn 2</div> <div class="btn" id="hello_3">btn 3</div> <div class="btn" id="hello_4">btn 4</div> </div> </body> </html>将csv作为字符串导入。

get-content

使用正则表达式替换在巨型字符串上比在csv对象上简单得多。