我偶然发现了一个我觉得非常困难的问题。我想用8个空格替换所有* .cc和* .h文件中行的开头的所有制表符。类似的东西:
sed 's/\t/ /g' -i *.cc *.h
但仅限于行的开头。请注意sed 's/^\t/ /g' -i *.cc *.h
不会做,因为当行以多个制表符开头时,它不会处理这种情况。
如何使用sed实现这一目标?
答案 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'