作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个以竖线分隔的.TXT文件。我需要将定界符改为逗号,但仍将文件扩展名保持为.TXT。该文件如下所示:
第1列|第2列
13 | 2019-09-30
96 | 2019-09-26
173 | 2019-09-25
我的脚本使用的是Windows Powershell 5.1版本。
我正在使用以下代码:
$file = New-Object System.IO.StreamReader -Arg "c:\file.txt"
$outstream = [System.IO.StreamWriter] "c:\out.txt"
while ($line = $file.ReadLine()) {
$s = $line -replace '|', ','
$outstream.WriteLine($s)
}
$file.close()
$outstream.close()
最佳答案
答案的唯一问题是如何尝试替换输入中的|
字符:
$s = $line -replace '|', ',' # WRONG
-replace
运算符期望将正则表达式(正则表达式)作为其第一个RHS操作数,并且
|
是正则表达式元字符(具有特殊含义)[1];要将
用作文字字符,您
必须\
-escape :
# '\'-escape regex metacharacter '|' to treat it literally.
$s = $line -replace '\|', ','
-replace
operator非常灵活,但在诸如此类的简单情况下,
也可以使用[string]
类型的.Replace()
方法,该方法执行文字字符串替换,因此不需要转义(它也比
-replace
更快):
# Use literal string replacement.
# Note: .Replace() is case-*sensitive*, unlike -replace
$s = $line.Replace('|', ',')
|
表示正则表达式中的替换,表示任一侧的子表达式都与输入字符串匹配,并且其中一个匹配就足够了;如果您的完整正则表达式只是
|
,则它有效地匹配输入中每个字符前后的空字符串,这可以解释您的症状;例如,
'foo' -replace '|', '@'
产生
@f@o@o@
关于powershell - 在Powershell中将管道定界文件更改为逗号定界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58226080/
我正在实现谱聚类算法,我必须确保矩阵(拉普拉斯矩阵)是半正定矩阵。 检查矩阵是否为正定矩阵 (PD) 就足够了,因为可以在特征值中看到“半”部分。矩阵非常大(nxn,其中 n 是几千的数量级)所以特征
我是一名优秀的程序员,十分优秀!