替换文件中每一行的第一个和最后一个字符
Replace first and last character of each line in file
我有一个文件,需要替换每一行的第一个和最后一个字符。我不知道这个文件有多少行。
这是我目前得到的:
$original_file = 'test.csv'
$destination_file = 'new.cvs'
$a = Get-Content $original_file
$i = $a.Length
$b = ""
$j = 0
if($j -ne $i) {
$j = $j + 1
$z = Get-Content $a | Select-Object -Index $j
$z.replace (0, '$')
$z.replace (z.Length, '$')
$b = $b + $z
}
Set-content -path $destination_file -value $b
但是没用。我做错了什么?
你把事情搞得太复杂了。只需使用正则表达式:
$original_file = 'test.csv'
$destination_file = 'new.cvs'
(Get-Content $original_file) -replace '^.|.$', '$' |
Set-Content $destination_file
^.
匹配字符串中的第一个字符,.$
匹配最后一个字符。 |
在正则表达式中表示交替,即 "match any of the alternatives in this pipe-separated list".
我有一个文件,需要替换每一行的第一个和最后一个字符。我不知道这个文件有多少行。
这是我目前得到的:
$original_file = 'test.csv'
$destination_file = 'new.cvs'
$a = Get-Content $original_file
$i = $a.Length
$b = ""
$j = 0
if($j -ne $i) {
$j = $j + 1
$z = Get-Content $a | Select-Object -Index $j
$z.replace (0, '$')
$z.replace (z.Length, '$')
$b = $b + $z
}
Set-content -path $destination_file -value $b
但是没用。我做错了什么?
你把事情搞得太复杂了。只需使用正则表达式:
$original_file = 'test.csv'
$destination_file = 'new.cvs'
(Get-Content $original_file) -replace '^.|.$', '$' |
Set-Content $destination_file
^.
匹配字符串中的第一个字符,.$
匹配最后一个字符。 |
在正则表达式中表示交替,即 "match any of the alternatives in this pipe-separated list".