这适用于您的输入:
echo 'Abdc 1234 1234 (5678) (5678) (9012) (9012) (3456)' |
sed 's/\(([0-9][0-9]*)\) \1/\1/g'
它假设重复项彼此跟随,如果不是这种情况,请使用此版本:
echo 'Abdc 1234 1234 (5678) (5678) (9012) (9012) (3456)' |
sed 's/\(([0-9][0-9]*)\) \(.*\)\1/\1\2/g'
或者使用 GNU sed 扩展表达式更短一些:
echo 'Abdc 1234 1234 (5678) (5678) (9012) (9012) (3456)' |
sed -r 's/(\([0-9]+\)) (.*)\1/\1\2/g'
所有情况下的输出:
Abdc 1234 1234 (5678) (9012) (3456)
编辑 - 处理存在两个以上相同项目的情况
这可以通过循环模式直到它不再匹配来完成:
echo 'Abdc 1234 1234 (5678) (5678) (9012) (9012) (3456) (5678) (5678)' |
sed -r ':a; s/(\([0-9]+\))(.*)\1 ?/\1\2/g; ta'