2014-09-22 56 views
0

输入:保留在SED取代多个串

These are some numbers aklö0/4:asfasd;assdf...asf8/8asdfklöjsdfv7/7asdf8/6 sdf 5/5 asdfasdf3/3 asdf 2/2 asdf7/7asfasdf:::::::7/6;;;;;;6/6asdf9/9......alright 

涂布在上述输入sed命令

sed 's/\(.\/.\).*\(.\/.\).*\(.\/.\).*\(.\/.\).*\(.\/.\).*\(.\/.\).*\(.\/.\).*\(.\/.\).*\(.\/.\).*\(.\/.\).*\(.\/.\).*/\1\t\2\t\3\t\4\t\5\t\6\t\7\t\8\t\9\t\10\t\11/g' infile > outfile 

预期输出继电器:

These are some numbers 0/4 8/8 7/7 8/6 5/5 3/3 2/2 7/7 7/6 6/6 9/9 alright 

问题遇到: 但它取代了最后两个0/40和8/81。 这就像它只能记住9件事情。

+1

使用多个替代命令超过9个反向引用。 – 2014-09-22 15:24:39

+0

's'/ \(。\ /。\)。* \(。\ /。\)/ \ 1 \ 2/g''给我这个:'这些是一些数字0/09/9好吧'在下次替换之前我失去了一切。 – AWE 2014-09-22 15:32:23

回答

3

正确。见The s Command

替换可以包含\ n(n为一个从1到9, 含)的引用,这指的是匹配的,其 包含在第n个之间的部分(及其匹配) 。此外, 替换可以包含未转义的&字符,其参考模式空间的整个匹配部分。最后,作为一个GNU sed的 扩展,可以包括由一个反斜杠和字母升 一个,L的特殊序列,U,U,或E.如果你想