sed:使用部分正则表达式来解析文本
我有一行文本,如下所示:
/src/my_module_my_branch/my_module
示例:/src/goodcode_dev/goodcode
我需要将其转换为:
/src/my_branch/my_module
示例:/src/dev/goodcode
问题是模块和分支都可以包含下划线。 所以我需要首先从第三部分中识别模块并用它来提取分支名称。 有没有办法使用 sed 进行此类转换?
I have a line of text which looks like this:
/src/my_module_my_branch/my_module
Example: /src/goodcode_dev/goodcode
and I need to convert it to:
/src/my_branch/my_module
Example: /src/dev/goodcode
The problem both module and branch can include underscores.
So I need first to identify the module from the third part and use it to extract out the branch name.
Is there a way using sed to do such conversions?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
如果您有 GNU sed,这应该可以工作。它假设一切都以
/src/
开头。英语:
使用扩展正则表达式 (
-r
) 调用sed
,以便+
正常工作。匹配行首,/src/
,组 1:一个或多个非斜杠,_
,组 2:一个或多个非斜杠,/< /code>,组 1,行尾。更改为
/src/
,组 2,/
,组 1。If you have GNU sed, this should work. It assumes everything begins with
/src/
.In English:
Invoke
sed
with extended regex (-r
) so that+
will work. Match beginning of line,/src/
, group 1: one or more non-slashes,_
, group 2: one or more non-slashes,/
, group 1, end of line. Change to/src/
, group 2,/
, group 1.首先找到最后一部分,然后用它来替换
First, find the last part, then use it to substitute
如果“模块”和“分支”部分之间没有任何区别,那么我会说不。也就是说,如果
my_module_my
可能是模块,并且branch
是分支,那么sed
如何知道呢?If there isn't any difference between the "module" and "branch" parts, then I'd say no. That is, if
my_module_my
could be the module, andbranch
the branch, then how wouldsed
know?