使用 powershell 和 regexp 替换整行文本?

2024-05-02

我有编程背景,但对 powershell 脚本和正则表达式还相当陌生。正则表达式一直困扰着我,我之前的项目也从未“强迫”我学习它。

考虑到这一点,我有一个文件,其中有一行文本需要替换。我不能依赖于知道该行存在于哪里,它前面是否有空格,或者被替换的实际文本是什么。我确实知道被替换的文本前言和之前的内容。

再次,我不会知道“替换此文本”的价值。我只会知道它前面的内容“”和前面的内容“”。编辑OP以澄清。谢谢!

我需要替换的文本行

<find-this-text>Replace This Text</find-this-text>

潜在代码

(gc $file) | % { $_ -replace “”, “” } | sc $file
  • 获取文件的内容,将其括在括号中以确保首先读取文件然后关闭文件,以便在尝试保存文件时不会引发错误。

  • 迭代每一行,并发出替换语句。这是我需要帮助的地方。

  • 使用 Set-Content 保存文件。我的理解是这种方法更好,因为它考虑了编码,比如UTF8。


XML 不是面向行的格式(节点可能跨越多行,就像一行可能包含多个节点一样),因此不应像面向行的格式一样对其进行编辑。请改用适当的 XML 解析器。

$xmlfile = 'C:\path\to\your.xml'

[xml]$xml = Get-Content $xmlfile
$node = $xml.SelectSingleNode('//find-this-text')
$node.'#text' = 'replacement text'

要将 XML 保存为“UTF-8 without BOM”格式,您可以调用Save() https://msdn.microsoft.com/en-us/library/system.xml.xmldocument.save%28v=vs.110%29.aspx方法与StreamWriter https://stackoverflow.com/a/2437780/1630171做正确的事™:

$UTF8withoutBOM = New-Object Text.UTF8Encoding($false)
$writer = New-Object IO.StreamWriter ($xmlfile, $false, $UTF8withoutBOM)
$xml.Save($writer)
$writer.Close()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 powershell 和 regexp 替换整行文本? 的相关文章

  • Powershell tail 多个文件命令

    我可以通过以下命令尾随一个文件 Get Content Path C log1 txt Tail 10 Wait 如何将其扩展到多个文件 我尝试了以下方法但没有成功 Get Content Path C log1 txt C log2 tx
  • 正则表达式 - 匹配不包含字符串的模式

    我对正则表达式很陌生 并且一直在寻找方法来做到这一点 但没有成功 给定一个字符串 我想删除以 abc 开头 以 abc 结尾且中间不包含 abc 的任何模式 如果我做 abc abc abc 它将匹配以 b 开头 以 abc 结尾并且中间包
  • Angular 2:使用正则表达式进行数字验证

    我正在尝试验证 IE 11 中的数字字段
  • Powershell - 奇怪的 WSL 输出字符串编码

    今天我只是想检查我的 Windows 工作站上是否安装了特定的子系统 因此 我使用 Windows Subsystem for Linux WSL 并安装可从 Microsoft Store 获取的 Ubuntu 现在我试图找到一种方法来检
  • Java:正则表达式 - 如何获取第一个引用文本

    作为初学者regex我相信我要问的事情太简单了 但无论如何我都会问 希望它不会打扰你帮助我 可以说我有这样的文字 你好 cool1 这个词 cool2 我想获取第一个引用的文本 即 cool1 不带 我的模式应该是什么 当使用匹配器时 我如
  • 尝试在 powershell 5.1 中使用here-strings 但不起作用

    当我尝试在 PS 5 1 中使用此处字符串时 出现红色曲线 我缺少什么 function Main csv test1 test2 echo csv Main Error White space is not allowed before
  • 如何在 powershell 中显示带有 .ps1xml 文件的嵌套集合

    我有一个像这样的分层对象结构 public class Department public string Name get set public string Manager get set public Employee Employee
  • 如何使用 sed 仅删除双空行?

    我找到了这个问题和答案 https stackoverflow com questions 4651591 howto use sed to remove only triple empty lines关于如何删除三重空行 但是 我只需要对
  • php 或 zend 中国际电话号码验证的正则表达式是什么?

    我有一个 zend 表单 其中有一个电话号码字段 并且必须检查验证器 我决定为此使用正则表达式 我搜索了谷歌 但我得到的结果不起作用 谁能给我提供正则表达式 这是我的代码 phone new Zend Form Element Text p
  • 我的 Powershell GUI 界面在打开网格视图时不断调整大小

    我目前正在构建一个复制到剪贴板工具 其中显示存储在文件夹中的 txt 文件列表 并且我使用 out gridview 来允许用户更好地选择和过滤列表 我已附上图片以供参考 单击加载 out gridview 的按钮后如何停止调整大小 Too
  • 你能挽救我的负面回顾示例来传达数字吗?

    在 高级正则表达式 一章中掌握 Perl http oreilly com catalog 9780596527242 我有一个损坏的示例 我无法找到一个很好的修复方法 这个例子可能为了自己的利益而试图变得太聪明 但也许有人可以帮我解决它
  • [Regex]::Replace() 和 -replace 有什么区别?

    我明白了之间的区别 Replace and replace 但是什么是 replace and Regex Replace 我测试了以下两个代码 但对我来说结果完全相同 我还提到了 PowerShell Cookbook O reilly
  • 删除匹配前的一个单词和一个单词

    匹配之前的一个单词可以是一组任何符号 例如 D E F 我有一个正则表达式 s w s XXX 输入示例 This is KKK M D D xXx PPP输出示例 This is KKK PPP 所以我需要删除 XXX 之前的 1 个单词
  • 使用 UTF-8 编码的 Powershell 字符串变量

    我检查了许多与此相关的问题 但找不到解决我的问题的东西 基本上 我想将 UTF 8 编码的字符串存储在变量中 然后使用该字符串作为文件名 例如 我正在尝试下载 YouTube 视频 如果我们打印视频标题 则会显示非英文字符 ytd这是you
  • Pester 没有捕获抛出的错误

    当我运行以下纠缠测试时 我希望它能够捕获预期的错误 但事实并非如此 但是 当我使用不同的函数和不同的 throw 语句运行测试时 它会起作用 纠缠测试 Describe Remove GenericCredential Function T
  • 选择前 n 个字符相等的行(MySQL)

    我有一张带有玩家句柄的桌子 如下所示 1 N Laka 2 N James 3 nor Brian 4 nor John 5 Player 2 6 Spectator 7 N Joe 从那里我想选择第一个 n 字符匹配的所有玩家 但我不知道
  • Mongodb shell mongo:通常只允许每个套接字地址(协议/网络地址/端口)使用一次。对于套接字:0.0.0.0:27017

    前两天还好好的 现在mongod不起作用 甚至echo ps A grep mongo没有打印任何内容 但它警告错误 每个套接字地址只有一种用途 怎么杀掉它 我也尝试过不同的随机端口 他们怎么可能也失败呢 D mongodb win32 x
  • Grep 和 Python

    我需要一种通过 Unix 命令行中的正则表达式使用 grep 搜索文件的方法 例如 当我在命令行中输入 python pythonfile py RE file to be searched 我需要正则表达式 RE 在文件中搜索并打印出匹配
  • PHP 中的 Preg_replace

    我想替换 中包含的字符串中的内容content 它是多行等 preg replace 函数应该删除整个 com 没有垫子 蒙特 尝试这个 result preg replace s replacement content subject
  • 字符串中的注释和注释中的字符串

    我正在尝试使用 Python 和 Regex 计算 C 代码中包含的注释中的字符数 但没有成功 我可以先删除字符串以删除字符串中的注释 但这也会删除注释中的字符串 结果会很糟糕 是否有机会通过使用正则表达式来询问不匹配注释中的字符串 反之亦

随机推荐