powershell - 从文件中删除孤立的回车
问题描述
我有一个日常流程,将管道分隔的文件下载并解析到数据库中。有时,这些文件在一行中的一个字段的末尾包含一个回车符(没有换行符),这会破坏我的流程。我的调度程序(不是我们公司内部的 Windows 调度程序)允许我在将这些文件加载到数据库之前对这些文件运行批处理或 PowerShell 进程,因此我想在字段末尾删除任何孤立回车的实例( \r|)。
此 PowerShell 命令在手动运行时有效:
(Get-Content CarriageReturnTest.txt -Raw).Replace("`r|","|") | Set-Content CarriageReturnTest.txt -Force
但是,当我把它放在调度程序中时,我得到一个错误,'","' 不被识别为内部或外部命令。我意识到调度程序必须运行一个 windows 命令,PowerShell "{command}"
所以双引号使命令行认为我正在运行几个不同的命令。我尝试用单引号替换 PowerShell 命令中的双引号,如下所示:
(Get-Content CarriageReturnTest.txt -Raw).Replace('`r|','|') | Set-Content CarriageReturnTest.txt -Force
这会通过调度程序运行,但实际上并没有从文件中删除任何内容,因为当 ` 用单引号括起来时,PowerShell 会将其解释为转义字符。
我试过用双引号转义,"", `", \", and ^"
但似乎没有任何效果。
我意识到我可以编写一些更长的批处理脚本来处理这个问题,但理想情况下,这将是一个适合调度程序的内衬。我还研究过将脚本保存为 ps1 文件并使用文件路径作为参数运行它,但我也没有让它工作。
解决方案
根据@JosefZ 所说的,我尝试了这个并且它有效:
(Get-Content CarriageReturnTest.txt -Raw) -replace('\r\|','|') | Set-Content CarriageReturnTest.txt -Force
-replace
让我在单引号'\r'
而不是双引号中使用正则表达式,这"`r"
让我无法逃脱
推荐阅读
- python - 有没有办法更简洁地打印特定数字的倍数?
- vimeo - 在基于 Vimeo 表单的上传中不尊重 redirect_url
- python - python中的NARX示例-训练和预测
- ios - 将 SwiftUI 视图覆盖在所有其他视图上,包括工作表
- azure - SQL DB 超大规模 ServiceObjectiveName/Cores
- arrays - 为用户名添加后缀号避免重复?
- game-engine - 在 GD 脚本中将变量的名称作为字符串获取
- java - 我如何将此 forEach 转换为 forLoop
- android - 在 Kotlin 的列表或数组中更改项目的数据类型
- r - 如何在R中将数据分类为周?