【问题标题】:Is it possible to replace a string in a text file with a line break via the windows command line?是否可以通过 windows 命令行用换行符替换文本文件中的字符串?
【发布时间】:2019-10-20 22:05:24
【问题描述】:

我有一个,它在一行中包含一堆数据,没有任何。它将包含类似于以下内容的数据:

{"Id":1801157,":"33611134":"E","Oct 19:":"G","Order":"117" ,"BroadcastDate":"2019-10-19"}

我想做的是在BroadcastDate 之前插入一个换行符,所以它现在看起来像这样:

{"Id":1801157,":"33611134":"E","Oct 19:":"G","Order":"117" ,"
BroadcastDate":"2019-10-19"}

我希望能够通过 来实现。所以基本上我想找到BroadcastDate并将其替换为<line break>BroadcastDate

【问题讨论】:

  • 文件中只有1行?只有 1 个 BroadcastDate 实例?

标签: text-file line-breaks windows command-line windows cmd command-line text-files line-breaks


【解决方案1】:

这似乎是一件奇怪的事情,但在 PowerShell 中并不难。如果您在受支持的 Windows 系统上,它将具有 PowerShell。

=== 格式-BroadcastFile.ps1

Get-Content -Path '.\BroadcastDate.txt' |
    ForEach-Object {
        $_ -replace 'BroadcastDate'."`nBroadcastDate"
    }

=== 在 .bat 文件脚本或 cmd shell 中运行它。

powershell -NoLogo -NoProfile -File "Format-BroadcastFile.ps1" >".\newfile.txt

【讨论】:

  • "`n" 是 PS 中换行符的“语法”吗?哎哟! ;-) 祝大家好运。
  • 感谢您的帮助,我正在做的事情很奇怪......但最终结果是将日期“2019-10-19”放入变量中。添加换行符是将 BroadcastDate 部分隔离到它自己的行,因此我可以使用 FINSTR 和 FOR 循环来提取“2019-10-19”。除非你认为有更简单的方法
  • 听起来你还没有告诉我们所有的故事。是否需要捕获线路上的任何其他信息并将其与日期相关联?线上总是有一个 ISO 格式的日期吗?我认为有更好的方法,但请把最终目标放在问题中。
  • 是的,最终结果是获取 YYYY-MM-DD 日期并将其存储到批处理文件中的变量中。我能够从文本文件中捕获特定数据的唯一方法是使用 FINDSTR 查找特定字符串并将结果保存到第二个文本文件中。然后使用 FOR 循环清理结果并将目标数据提取到变量中。
  • FINDSTR 只能返回包含关键字的整行,并且由于源文本文件基本上是一个大的单行,因此 FINDSTR 返回的结果与源文件基本相同。这就是为什么我想将 BroadcastDate 移到新行...以帮助隔离目标日期数据。
猜你喜欢
  • 2011-02-21
  • 1970-01-01
  • 2011-08-14
  • 2015-08-07
  • 1970-01-01
  • 1970-01-01
  • 2016-10-21
  • 2012-11-06
  • 1970-01-01
相关资源
最近更新 更多