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

SED用多次出现的单词替换单词分隔符

桂学
2023-03-14

对sed来说有点新。我制作了一个脚本来替换文件中的各种文本。例如,文件test。txt包含:

My name is <Jack>.
My dad calls me <Jack>. My mum calls me <Jack>, too.

我想替换“

sed -re 's/<(.+?)>/:\1:/g' test.txt

它回来了

My name is :Jack:.
My dad calls me :Jack>. My mum calls me <Jack:, too.

因此,它可以很好地处理一行中的单个事件。一行中多次出现的结果是错误的,因为sed参数是第一行之间的所有文本”

有什么提示吗?(还有一点解释……)

谢谢

编辑:

使用Gedit或其他编辑器中的replace,相同的正则表达式可以正常工作。


共有2个答案

翟博雅
2023-03-14

我更新了这个例子。

以下是test.html:

My name is <a href="filename.html#firstAnchor">Jack</a>.
My dad calls me <a href="filename.html#firstAnchor">Jack</a>. My mum calls me <a href="filename.html#secondAnchor">Jack</a>, too.

这个命令给我预期的结果:

sed -re 's/<a href="filename.html#[^>]*>([^<]*)<\/a>/:\1:/g' test.html

结果:

My name is :Jack:.
My dad calls me :Jack:. My mum calls me :Jack:, too.

sed搜索以

我拿到了吗?

充浩波
2023-03-14

最简单:

kent$  echo "My name is <Jack>.
dquote> My dad calls me <Jack>. My mum calls me <Jack>, too."|sed 's/[<>]/:/g'
My name is :Jack:.
My dad calls me :Jack:. My mum calls me :Jack:, too.

如果要使用组:

kent$  echo "My name is <Jack>.
My dad calls me <Jack>. My mum calls me <Jack>, too."|sed -r 's/<([^>]*)>/:\1:/g'
My name is :Jack:.
My dad calls me :Jack:. My mum calls me :Jack:, too.

在代码中,您希望使用非贪婪匹配,不幸的是,sed不支持这一点。因此,您获得输出的原因是:

整个的

<Jack>. My mum calls me <Jack>

就像

匹配插孔

 类似资料:
  • 我有一个,当你点击next时,你可以在其中写一些东西。你写的文本会被写入另一个editText..它工作得很好。。但我想用textWatcher替换一些字母。。 示例:如何使S为$或O为@ 更新: 我的代码会将你在EditText中写的内容输入到下面的大文本视图中…当我按下按钮时,它会设置你写的文本,但我想将一些字母(例如S)替换为$…当我键入S时,什么都不会发生…只是S不会变成$… 我做错了什么

  • 我有一条短信。在这篇文章中是一张图片。我想把每个单词柏林都换成一个链接。现在我有问题,这站在图片的旧部分也是柏林,这也被取代。 有没有可能照片中的柏林没有被取代?注意,代码只是一个示例。我通常从wordpress获取内容。但这与此无关。我想。

  • 问题内容: 有没有办法替换放置在HTML正文中的table元素内的普通文本? 喜欢用“ hi”代替“ hello”吗? 请仅使用不带 jQuery的* JavaScript 。 * 问题答案: 要用另一个字符串替换HTML中的字符串,请使用innerHTML的replace 请注意,这将替换整个正文的第一个实例,包括HTML代码中的任何实例(例如,类名等。),因此请谨慎使用- 为了获得更好的结果,

  • 问题内容: 我想做的是一项相当普通的任务,但我在网络上找不到任何参考。我的文字带有标点符号,我想要一个单词列表。 应该 但是只能使用一个参数,因此在用空格分割后,所有单词都带有标点符号。有任何想法吗? 问题答案: 正则表达式合理的情况:

  • 问题内容: 我有一个重复条目的单词。 我想计算并保存数据结构中每个单词的出现次数。 我该怎么做? 问题答案: 如果您没有大量的字符串,最短的实现方法是使用方法,如下所示: 输出:

  • 我想替换字符串中的一些单词。我有可行的解决方案,但我认为这不是最好的。你能帮我做些更有效的事情吗 代码是avaiable在这里:https://codepen.io/yasAFE/pen/BYOVme