Sed 替换单词,但仅在冒号之后

Sed 替换单词,但仅在冒号之后,sed,Sed,我已经对此研究了很长时间,但似乎找不到答案。也许这里有人可以帮忙 我正在尝试使用sed替换yml/yaml文件中的单词。因为有些单词包含在名称中,所以我只想替换冒号(“:”)后面出现的单词 比如说。如果.yml文件包括: en: label_some_tracker: A tracker label_all_tracker: All trackers label_attachment_type_trackers: Select trackers. tracker_plural:

我已经对此研究了很长时间,但似乎找不到答案。也许这里有人可以帮忙

我正在尝试使用sed替换yml/yaml文件中的单词。因为有些单词包含在名称中,所以我只想替换冒号(“:”)后面出现的单词

比如说。如果.yml文件包括:

en:
  label_some_tracker: A tracker
  label_all_tracker: All trackers
  label_attachment_type_trackers: Select trackers.
  tracker_plural: trackers
我想用所有值中的issue替换所有出现的跟踪器。模式:

s/tracker/issue/
还会更改字段的名称,这会破坏我的代码

我可以通过包含一个词的所有可能变体的术语,在一定程度上减少问题的规模。例如:

s/trackers/issues/
s/tracker/issue/
但这并不能解决所有情况

我已尝试在搜索词前插入空格:

s/ tracker/ issue/
但这与搜索词位于行开头的名称相匹配

如果我搜索整个单词,那么它似乎仍然会选择名称,因为“:”和“uu”是“非单词”字符

如果我试图在搜索词的开头和结尾加上空格,但它却漏掉了一行末尾的单词,或者漏掉了训练空格前带有标点符号的单词模式

唯一确定的方法似乎是只替换冒号(“:”)后面的单词,但我似乎不知道如何使用sed

这里有人知道怎么做吗?

使用GNU时:

sed -E 's/(:.*)tracker/\1issue/g' file
输出:

en: label_some_tracker: A issue label_all_tracker: All issues label_attachment_type_trackers: Select issues. tracker_plural: issues 嗯: 给跟踪者贴上标签:一个问题 标签\所有\跟踪器:所有问题 标签\附件\类型\跟踪器:选择问题。 追踪者:问题 使用GNU时:

sed -E 's/(:.*)tracker/\1issue/g' file
输出:

en: label_some_tracker: A issue label_all_tracker: All issues label_attachment_type_trackers: Select issues. tracker_plural: issues 嗯: 给跟踪者贴上标签:一个问题 标签\所有\跟踪器:所有问题 标签\附件\类型\跟踪器:选择问题。 追踪者:问题
替换第二次发生:

 sed 's/tracker/issue/2' file

替换第二次发生:

 sed 's/tracker/issue/2' file

请将该示例输入的所需输出(无说明)添加到您的问题中(无评论)。请将该示例输入的所需输出(无说明)添加到您的问题中(无评论)。不需要使用
g
标志(提供数据)因为
*
是贪婪的,它会吞下所有其他出现的
跟踪器
。非常感谢!我要试试。@poton:是的,
g
没用。我需要一个条件跳转来替换它们:
sed-E:a;s/(:*)跟踪器/\1问题/;ta'文件
不需要使用
g
标志(提供数据),因为
*
是贪婪的,并且会吞掉所有其他出现的
跟踪器
。非常感谢!我要试试。@poton:是的,
g
没用。我需要一个条件跳转来替换它们:
sed-E:a;s/(:*)跟踪器/\1问题/;ta'文件