2014-01-05 2 views
0

Я просто наткнулся на проблему, которую я нахожу удивительно трудной. Я хотел бы заменить все символы табуляции в начале строк во всех * .cc и * .h файлах с 8 пробелами. Что-то вроде:Заменить все символы табуляции в начале строк с 8 пробелами?

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

Но только для начала линий. Имейте в виду, что sed 's/^\t/ /g' -i *.cc *.h не будет делать, поскольку он не обрабатывает случай, когда линия начинается с нескольких символов табуляции.

Как добиться этого с помощью sed?

+1

Вы вероятно, нужно C декоратор. Проверьте этот вопрос на Stackoverflow [1]. [1]: http://stackoverflow.com/questions/841075/best-c-code-formatter-beautifier – unxnut

+0

Ну, я в основном хотел бы сделать только это конкретные изменения. Для того, чтобы сделать всю работу, вам понадобится много времени. – d33tah

+0

В регулярном выражении звездочка используется для обозначения нуля или более предыдущего символа. Таким образом, следующая команда sed может работать, но я не тестировал: 'sed 's/^ \ t \ t *// g' -i * .cc * .h' Обозначение^\ t \ t * означало бы один или несколько символов табуляции в начале строки. – mti2935

ответ

0

Использование СЭД

sed -r ':a s/(^ {8}*)\t/\1  /;ta' 
Смежные вопросы