需要在文件中将\x0d\x0a
替换为\x2c\x0d\x0a
。
在Unix上,我可以相对容易地做到这一点:
awk '(NR>1){gsub("\r$",",\r")}1' $file > "fixed_$file":
需要在PowerShell中实现此功能的帮助。
谢谢。
答案 0 :(得分:3)
假设您正在 Windows 上运行此命令(默认为\r\n
(CRLF)换行符),则以下命令
与您的awk
命令等效:
Get-Content $file | ForEach-Object {
if ($_.ReadCount -eq 1) { $_ } else { $_ -replace '$', ',' }
} | Set-Content "fixed_$file"
注意事项: 保留输入文件的字符编码,并且
Set-Content
使用默认值,您可以使用-Encoding
覆盖默认值。
在 Windows PowerShell 中,此默认值是系统的“ ANSI”编码,而在PowerShell Core 中,它是无BOM的UTF-8。
Get-Content $file
逐行读取输入文件。
ForEach-Object
循环按原样($_.ReadCount -eq 1
通过第一行($_
),并附加,
(这是转义序列{ \x2c
命令中的{1}}代表所有其他人(awk
)。
$_ -replace '$', ','
或$_ + ','
是附加逗号的更简单的选择;此处使用了基于正则表达式的"$_,"
运算符来突出显示类似于-replace
的{{1}}的PowerShell功能。 awk
然后将结果行写入目标文件,并以适合平台的换行符结尾,在Windows上为CRLF(gsub()
)。