在sed替换中保留多个字符串

时间:2014-09-22 15:14:27

标签: 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 个答案:

答案 0 :(得分:3)

正确。见The s Command

  

替换可以包含\ n(n是从1到9的数字,   包含)引用,指的是匹配的部分   包含在第n个(和它的匹配)之间。而且,   替换可以包含未转义的&参考的人物   图案空间的整个匹配部分。最后,作为GNU sed   扩展名,你可以包含一个由反斜杠组成的特殊序列   字母L,l,U,u或E中的一个。