需要使用Powershell将\ x0d \ x0a替换为\ x2c \ x0d \ x0a

时间:2018-10-23 21:11:17

标签: powershell replace hex

需要在文件中将\x0d\x0a替换为\x2c\x0d\x0a

在Unix上,我可以相对容易地做到这一点:

awk '(NR>1){gsub("\r$",",\r")}1' $file > "fixed_$file":

需要在PowerShell中实现此功能的帮助。

谢谢。

1 个答案:

答案 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())。