gpt4 book ai didi

sed 替换未知字符串的位置匹配除以用户定义的分隔符

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:02:59 26 4
gpt4 key购买 nike

当位于第 3 级且分隔符为 / 时,想要从字符串重命名(未知)文件路径中的(已知)第 3 个文件夹

sed 明确需要一行。因为我稍后想将它用于 tar --transform=EXPRESSION

string="/db/foo/db/bar/db/folder"
echo "$string" | sed 's,db,databases,'

sed 仅在第 3 级替换“db”

预期结果

/db/foo/databases/bar/db/folder

最佳答案

您可以使用捕获组来捕获/db/foo/,然后匹配db。然后使用 \1 在替换中使用第一个 caputring 组:

string="/db/foo/db/bar/db/folder"
echo -e "$string" | sed 's,^\(/[^/]*/[^/]*/\)db,\1databases,'

关于模式

  • ^ 字符串开始
  • \( 开始捕获组
    • /[^/]*/[^/]*/ 使用否定字符类匹配前两部分
  • \) 关闭捕获组
  • db 字面匹配

那会给你

/db/foo/databases/bar/db/folder

关于sed 替换未知字符串的位置匹配除以用户定义的分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55343129/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com