gpt4 book ai didi

Windows SED 命令 - 无需正则表达式的简单搜索和替换

转载 作者:可可西里 更新时间:2023-11-01 10:38:03 25 4
gpt4 key购买 nike

我应该如何使用“sed”命令来查找和替换给定的词/词/句子而不将它们视为特殊字符?

换句话说,热将查找和替换参数视为纯文本。

在下面的示例中,我想用“+sagar”替换“sagar”,然后我必须给出以下命令

sed "s/sagar/\\+sagar@g"

我知道\应该用另一个\转义,但我不能进行这种操作。因为有这么多特殊字符和它们的组合。

我将把查找和替换参数作为来自用户屏幕的输入。我想从 C# 代码执行 sed。

简单地说,我不想使用 sed 的正则表达式。我希望我的命令文本被视为纯文本?

这可能吗?如果可以,我该怎么做?

最佳答案

虽然可能有 sed 版本有类似 --noregex_matching 的选项,但大多数版本没有该选项。因为您通过提示用户获得搜索和替换输入,所以最好的办法是扫描用户输入字符串以查找 reg-exp 特殊字符并适本地转义它们。

此外,您的用户是否期望他们的全大写搜索输入能够正确匹配和替换小写或混合大小写的字符串?在这种情况下,回想一下,您可以将他们的目标字符串重写为 [Ss][Aa][Gg][Aa][Rr],并替换为 +Sagar

请注意,替换端使用的正则表达式字符要少得多,“&”表示“匹配的完整字符串”,然后是编号的替换组,如 \1,\2,... 。考虑到用户不知道或不期望他们可以使用此类字符,他们在所需替换中使用 is \1 的可能性非常低。它们更有可能有效地使用 &,因此您必须(至少)扫描它并替换为 \&。在基本的 sed 中,仅此而已。 (在最新的 gnu seds 中可能还有其他的,或者一些起源于 PC 工具的 sed)。

对于替换字符串,您根本不必转义 + 字符。 \ 可能是。同样,您可以扫描用户的“原始”输入,并根据需要添加转义字符。

最后,如果您为将要分发的“包”执行此操作,并且您将依赖于用户的 sed 版本,请注意 sed 有很多 float 版本周围,​​一些起源于 Unix/Linux,而其他一些,特别是 super-sed,(我很确定)开始作为 PC-standalones 并且具有非常不同的功能集。

IHTH.

关于Windows SED 命令 - 无需正则表达式的简单搜索和替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14020060/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com