gpt4 book ai didi

linux - 在同一行用 SED 多次出现替换

转载 作者:可可西里 更新时间:2023-11-01 11:48:36 25 4
gpt4 key购买 nike

我想用反斜杠+斜杠“\/”替换字母数字之间的所有斜杠“/”,除了每​​个字符串的最后一个斜杠,例如

nocareNocare abc\/def/ghi/mno\/pq/r   abc\/def\/ghi/mno\/pq/r

应该变成:

nocareNocare abc\/def\/ghi\/mno\/pq/r   abc\/def\/ghi\/mno\/pq/r

我使用:

sed 's/\(.*\)\([[:alnum:]]\)\/\([[:alnum:]]\)\(\S*\)\(\\\|\/\)/\1\2\\\/\3\4\//g'

简短说明:匹配

any string + alnum + / + any non-white + / or \

但它只替换了一种情况,所以我需要运行它 3 次才能替换所有 3 次出现的情况。看起来像第一次它一直匹配到:

>nocareNocare abc\/def/ghi/mno\/pq/r   abc\/def\/ghi/

代替

>nocareNocare abc\/def/

最佳答案

sed -e :a -e 's|\([a-z0-9]\)/\([a-z0-9][^ ]*[a-z0-9]/[a-z0-9]\)|\1\\/\2|;ta' filename

粗略地翻译一下,这表示“替换一个单独的斜杠,然后是字符串中的一些其他内容,然后是另一个单独的斜杠,带有反斜杠和相同的东西(和第二个斜杠)。在进行这样的替换之后,重新开始。”

关于linux - 在同一行用 SED 多次出现替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41141171/

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