【问题标题】:Using powershell how to replace pageBreak in a text file?使用powershell如何替换文本文件中的pageBreak?
【发布时间】:2017-03-05 04:49:39
【问题描述】:

我要做的是从文本文件创建一个 word 文档。但是文本文件中有pageBreaks。我想删除或替换文本文件中的那些 pageBreaks。这是为了让我可以在 word 文档中添加 pageBreaks,然后我将在我实际需要的地方创建它。

以下是我自己尝试替换文本文件中的 pageBreak 的 PowerShell 代码。这行不通。因为使用 "`f" 代替 pageBreak 不起作用。

$oldWord = "`fPage"
$newWord = "Page"

#-- replace the page breaks in the file
(Get-Content $inputFilePath) -replace '$oldWord', '$newWord' | Set-Content $inputFilePath

在文本编辑器 UltraEdit 中显示的 pageBreak 符号是 ♀ 在 UltraEdit 中替换字符很容易。我想使用 Powershell 替换或删除它。

下面是一个相关的问题。但是关于 PowerShell 代码仍然没有答案。

How to remove unknown line break (special character) in text file?

【问题讨论】:

  • 我想做的是从文本文件创建一个word文档。但是文本文件中有pageBreaks。我想删除或替换文本文件中的那些 pageBreaks。这是为了让我可以在随后创建的 word 文档中添加 pageBreaks
  • @RyanBemrose 我尝试使用 -Raw。下面是错误。 Get-Content : 找不到与参数名称“原始”匹配的参数。
  • 我猜是 Windows 7?我认为-Raw 参数是在 8.0 或 8.1 中添加的。无论如何,如果发布的答案对您不起作用,我们可能需要确切地知道角色是什么。尝试在十六进制编辑器中打开文件以查看页尾字符序列。
  • 您的代码无法正常工作的一个原因是您在单引号中使用了变量而不是双引号。
  • @RyanBemrose 原始参数适用于 powershell v3(来自 abhijith-pk 答案)。我将 powershell v2 作为 Windows 7 的一部分。

标签: powershell replace page-break


【解决方案1】:

对于分页符,您可以使用:

[io.file]::ReadAllText( 'H:\oldFile.txt') | %{$_.replace("`f","")} >h:\newFile.txt

以下 sn-p 将在 powershell v3 中工作:

cat H:\oldFile.txt -raw | %{$_.replace("`f","")} >h:\newFile.txt

【讨论】:

  • @RayBacker 如果这解决了问题然后将答案标记为已接受,这将对遇到相同问题的人有所帮助
  • @Abhijit-pk 代码有效并接受了答案。谢谢
【解决方案2】:

感谢您的提问!这个很有趣。

所以 Form-Feed 特殊字符是 powershell 中的一个错误。如果你回显它,你只会得到一个奇怪的字符,如果你不能显示它,你会得到一个正方形。但是,如果您将其复制并粘贴回 powershell 终端,如果只是将您的命令入口点移动到屏幕顶部。奇怪。

我所做的是尝试找到替换一般特殊字符的方法。你可以使用$oldWord -replace 'REGEX_GOES_HERE', 'THING_TO_REPLACE_WITH_HERE在powershell中使用正则表达式,所以我想出的是:

$oldWord -replace '[\f]', '' #You can also use \r for carriage return, \n for new line, \t for tab, \s for ALL whitespace

这将简单地删除换页符的所有实例。

希望这会有所帮助!干杯!

【讨论】:

  • 尝试使用 $oldWord = "[\f']Page" $newWord = "Page"。但这没有用。我不习惯正则表达式。
  • 抱歉,我在发送的代码中犯了一个小错误。如果您的字符串看起来像“fHere is some words with that weird symbol f in it”并保存到变量$oldVariable,那么您可以通过执行$oldVariable -replace "[\f]", "" 获得“固定”版本,这将找到`f 的所有实例并将其替换为空字符串.结果将是“这里有一些带有奇怪符号的单词”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-23
  • 2020-10-30
  • 2016-09-10
  • 1970-01-01
  • 1970-01-01
  • 2021-01-12
相关资源
最近更新 更多