powershell - 从文件中删除孤立的回车

标签 powershell command-line

我有一个日常流程,将管道分隔的文件下载并解析到数据库中。有时,这些文件在一行中的一个字段的末尾包含一个回车符(没有换行符),这会打断我的过程。我的调度程序(不是我们公司内部的 Windows 调度程序)允许我在将这些文件加载​​到数据库之前对这些文件运行批处理或 PowerShell 进程,因此我想在字段末尾删除任何孤立的回车符实例(\r|).

此 PowerShell 命令在手动运行时有效:

(Get-Content CarriageReturnTest.txt -Raw).Replace("`r|","|") |设置内容 CarriageReturnTest.txt -Force

但是,当我将其放入调度程序时,出现“'”,“' 未被识别为内部或外部命令的错误。我意识到调度程序必须运行 PowerShell "{command}" 的 Windows 命令,因此双引号使命令行认为我正在运行多个不同的命令。我尝试用单引号替换 PowerShell 命令中的双引号,如下所示:

(Get-Content CarriageReturnTest.txt -Raw).Replace('`r|','|') |设置内容 CarriageReturnTest.txt -Force

这通过调度程序运行,但实际上并没有从文件中删除任何内容,因为 PowerShell 将 ` 解释为用单引号引起来的转义字符。

我尝试使用 ""、`"、\"和 ^" 转义双引号,但似乎没有任何效果。

我意识到我可以编写一些更长的批处理脚本来处理这个问题,但理想情况下,这将是一个适合调度程序的单行脚本。我还研究过将脚本保存为 ps1 文件并使用文件路径作为参数运行它,但我也没有让它工作。

最佳答案

根据@JosefZ 所说的,我尝试了这个并且成功了:

(Get-Content CarriageReturnTest.txt -Raw) -replace('\r\|','|') |设置内容 CarriageReturnTest.txt -Force

-replace 让我在单引号 '\r' 中使用正则表达式,而不是在双引号中使用 "`r",这让我从逃跑

关于powershell - 从文件中删除孤立的回车,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59690334/

相关文章:

powershell - 安装 v4 后,您可以模仿 PowerShell v3 吗?

powershell - 使用 PowerShell 查询 CRM 2011 SOAP 端点

linux - 替换 zsh 命令行中的字符串

java - 如何为 .jar 命令行脚本创建别名?

linux - Bash:将 `cat` 重定向到没有换行符的文件

mysql - 使用命令行将SQL文件导入数据库时​​,使用了错误的MySQL用户

json - 意外的ConvertTo-Json结果?答:它的默认深度为2

windows - 如何从 Get-ChildItem 获取所有可执行文件的路径

regex - PowerShell/Regex : Rename all files, 修改数字序列

mysql - 为什么在 Mac OS X Lion 上的 $/usr/local/mysql/bin 内 Mysql 无法启动?