我想在每个连续标签中插入一个字符串。
输入数据的格式如下:
Column1\tColumn2\t\t\t\tColumn6....
这是我的代码
sed -e 's/\t\t/\tString\t/g'
有4个连续标签,所以我希望插入3个'String'。
'Column1\tColumn2\tString\tString\tString\tColumn6......
但是我得到了结果,只插入了2个'String'。 在每对之间插入。
'Column1\tColumn2\tString\t\tString\tColumn6......
如何获得正确的结果?
答案 0 :(得分:3)
您可以递归此命令:
$ echo -e "Column1\tColumn2\t\t\t\tColumn6...." | sed ':a;s/\t\t/\tString\t/g;ta'
Column1 Column2 String String String Column6....
答案 1 :(得分:2)
正如@Birei指出的那样,sed
正则表达式很难做到这一点,因为它不能使用前瞻和后瞻断言。
另一方面,这在perl
:
$ echo -e "Column1\tColumn2\t\t\t\tColumn6...." | perl -pe 's/\t(?=\t)/\tString/g'
Column1 Column2 String String String Column6....
也就是说,用 TAB +“String”替换后面带有TAB 的TAB。