首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Regex只替换属性名称中的连字符

Regex只替换属性名称中的连字符
EN

Stack Overflow用户
提问于 2013-11-22 14:46:30
回答 2查看 137关注 0票数 2

我有一根看起来像这样的绳子。

代码语言:javascript
复制
<tag-name i-am-an-attribute="123" and-me-too="321">

我想要做的就是把虚线替换成下划线,但是标签名应该保持不变。

希望有一些专家能帮我解决问题。

如果有人需要这个解决方案。

我最后得到了perl oneliner命令。

echo '<tag-name i-am-an-attribute="123" and-me-too="321">' | perl -pe 's/( \K[^*"]*)-/$1_/g;' | perl -pe 's/ / /g;'

结果:

代码语言:javascript
复制
<tag-name i_am_an_attribute="123" and_me_too="321">
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-22 19:08:50

使用sed:

代码语言:javascript
复制
sed ':l;s/-\([^- ]*\)\( *=\)/_\1\2/g;tl' input

给予:

代码语言:javascript
复制
<tag-name i_am_an_attribute="123" and_me_too="321">
票数 1
EN

Stack Overflow用户

发布于 2013-11-22 23:42:46

作为文件中的一行:-

代码语言:javascript
复制
read -r < file

fullstring=$(echo "${REPLY}" | sed s'@-name @-name:@')

field1=$(echo "${fullstring}" | cut -d':' f1)
field2=$(echo "${fullstring}" | cut -d':' f2)

fixedfield=$(echo "${field2}" | sed s'@-@_@'g)

echo "${field1} ${fixedfield}"

我发现,使用脚本,最重要的是在文本中为自己提供锚,您可以使用这些锚将文本分割成段,然后对其执行操作。尝试用分隔符将您的文本格式化为实际字段,这样可以使生活更加轻松。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20147632

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档