正则表达式查找并替换为 sed,匹配组并根据条件替换

NRe*_*ngh 1 itunes script regex sed

这可能与 sed 吗?

我实际上在 iTunes 中使用Doug's Scripts 中的“Track Name Edit with sed” ,并且我有一系列以以下两种方式之一命名的曲目:

Identical string - Identical string
Run Code Online (Sandbox Code Playgroud)

或者

Some string - some different string
Run Code Online (Sandbox Code Playgroud)

在第一种情况下,我想删除一个相同的字符串和中间的字符串,-因此只剩下“相同字符串”的一次迭代。如果字符串不同(第二种情况),我想不理会它。

我试过了s/^(.*) - $1/$1/,但似乎无法匹配我刚刚定义的组。s/^(.*) - (.*)/$1/显然,将适用于第一种情况,但会错误地处理第二种情况。使用我提到的工具还有其他方法吗?

use*_*686 7

可以参考你刚才定义的组,但sed用途\n,不$n,因为这。此外,分组( )仅适用于“扩展”模式(使用-r选项启用):

sed -r 's/^(.+) - \1/\1/'
Run Code Online (Sandbox Code Playgroud)

在“基本”模式下,您将使用:

sed 's/^\(.*\) - \1/\1/'
Run Code Online (Sandbox Code Playgroud)