当前位置: 首页 > 知识库问答 >
问题:

如何替换多个模式一次与se?

闻人河
2023-03-14

假设我有'abbc'字符串,我想替换:

  • ab-

如果我尝试两次替换,结果不是我想要的:

echo 'abbc' | sed 's/ab/bc/g;s/bc/ab/g'
abab

那么我可以使用什么sed命令来替换下面的命令呢?

echo abbc | sed SED_COMMAND
bcab

编辑:实际上文本可能有2个以上的模式,我不知道我需要多少替换。因为有人回答说,sed是一个流编辑器,它的替代品是贪婪的,我想我需要使用一些脚本语言来实现这一点。

共有3个答案

米元凯
2023-03-14

sed是一个流编辑器。它贪婪地搜索和替换。实现您所要求的唯一方法是使用中间替代模式,并最终将其更改回原来的模式。

echo'abcd'|sed-e's/ab/xy/; s/cd/ab/; s/xy/cd/'

祁俊喆
2023-03-14

我总是使用带“-e”的多个语句

$sed-e的:和:\n

这将在所有AND's、GROUP BY's、UNION's和from's之前附加一个\n,而'

邓元白
2023-03-14

也许是这样的:

sed 's/ab/~~/g; s/bc/ab/g; s/~~/bc/g'

~替换为您知道不在字符串中的字符。

 类似资料:
  • 问题内容: 在JavaScript中有一个简单的等效项吗? 这是使用PHP的,它允许您使用单词数组来查找和替换。我可以使用JavaScript / jQuery做类似的事情吗? 问题答案: 您可以使用自己的函数来扩展String对象,该函数可以满足您的需要(如果缺少功能,则很有用): 对于全局替换,您可以使用正则表达式: 要使用该功能,它将类似于您的PHP示例:

  • 我试图制作一个模糊的自动完成建议框,突出显示带有HTML标记的搜索字符 例如,如果用户输入“ldi”,其中一个建议是“莱昂纳多·迪卡普里奥”,则期望的结果是“莱昂纳多·迪卡普里奥”。每个字符的第一次出现将按外观顺序高亮显示。 我现在正在做的是: 导致 现在我想用

  • 问题内容: 说我有一个文件,其中包含一些文本。其中包含子字符串,例如“ substr1”,“ substr2”,“ substr3”等。我需要将所有这些子字符串替换为其他文本,例如“ repl1”,“ repl2”,“ repl3”。在Python中,我将创建一个这样的字典: 并创建用’|’组合键的模式,然后替换为function。在Java中有类似的简单方法吗? 问题答案: 这是您的Python

  • 问题内容: 我有这个字符串: 正在做: 似乎只删除了上面字符串中的第一个匹配项。 如何替换 所有 出现的内容? 问题答案: 注意:请勿在对性能有要求的代码中使用此代码。 作为简单文字字符串的正则表达式的替代方法,您可以使用 一般模式是 在某些情况下,它过去比使用和正则表达式要快,但是在现代浏览器中,情况似乎不再如此。 结论:如果您有性能至关重要的用例(例如,处理数百个字符串),请使用Regexp方

  • 基于SO上的各种线程(例如。用模式替换if else语句)我知道我可以用< code>Command模式替换多个if\else语句。 我的情况有点不一样。 我有一系列,只有当前一个命令不成功时,我才需要执行每个。 例如,假设我需要从一个假设的网页中检索文本——我可以使用屏幕抓取直接从页面中抓取文本,也可以从API中获取文本。如果屏幕抓取不成功,我只想从API获取文本。换句话说,如果“scrap”命

  • 我有100个html网页与各种文本翻译。我也有翻译文本准备在一个word文档。所以我要做的就是找到多块不同的文本,然后用多块翻译的文本替换它们。我通常使用dreamweaver,它有一个很好的查找/替换功能,但它一次只能替换一个文本/代码块。更具体地说,举个例子,假设我有3个句子(我个人有更多的句子,大约1000个不同的句子需要替换): 英文文本1、英文文本2、英文文本3。 并且想要同时将所有3个