用8个空格替换行开头的所有制表符?

时间:2014-01-05 17:51:54

标签: sed

我偶然发现了一个我觉得非常困难的问题。我想用8个空格替换所有* .cc和* .h文件中行的开头的所有制表符。类似的东西:

sed  's/\t/        /g' -i  *.cc *.h

但仅限于行的开头。请注意sed 's/^\t/ /g' -i *.cc *.h不会做,因为当行以多个制表符开头时,它不会处理这种情况。

如何使用sed实现这一目标?

3 个答案:

答案 0 :(得分:2)

您可以使用以下命令:

sed ':label s/^\(\(        \)*\)\t/\1        /; t label' -i  *.cc *.h

您可以在这里阅读sed中的分支:http://www.thegeekstuff.com/2009/12/unix-sed-tutorial-6-examples-for-sed-branching-operation/

答案 1 :(得分:0)

使用sed

sed -r ':a s/(^ {8}*)\t/\1        /;ta'

答案 2 :(得分:0)

尝试使用,

sed -e '/^\t/ s/\t/        /g'