微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Sed只replace完全匹配

我不想用Europe12_yesturday在文件中replaceEurope12这样的string。 不改变文件中也存在的Europe12-36string。

我试过了:

$basename=Europe12 sed -i 's/b$basenameb/${basename}_yesterday/g' file.txt

但这也改变了Europe12-36弦。

如何从bash中的string获取数值

一个文件中search一个string,如果匹配,用同一个stringreplace同一行中的另一个string

如何根据文件中的最小行删除一个X行

如何使用sed显示某个logging的某一列

转换只包含特定标签的XML

Bash,删除空的XML标签

在使用bash / linux的特定行之后创build一个空行

如何使用sed删除前导数字?

编辑一个巨大文件的第一行和最后一行

奇怪的行为与sed命令

需要一个空格或行尾字符:

sed 's/Europe12([ ]|$)/Europe12_yesturday1/g' input

手动构建所需的分隔符列表,而不是使用b , W或< 。 -不是单词字符(字母数字)的一部分,所以这也是为什么这也匹配您的其他字符串。 所以尝试这样的事情,根据需要扩展列表: [-a-zA-Z0-9] 。

你可以做2次:

sed -e 's/Europe12/Europe12_yesturday/g' -e 's/Europe12_yesturday-36/Europe12-36/g' file.txt

sed 's/(Europe12[[:blank:]])/1_yesturday/g;s/Europe12$/&_yesturday/' YourFile

[[:blank:]]可以用你接受的任何边界来完成,也可以像。,;:/])等等(在这种情况下,是这个char的regex含义的carrefull)

答复迟了一点。用“字边界”符号( <.. >)很容易实现

sed -i 's/<$basename>/${basename}_yesterday/g' file.txt

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐