Можно выполнить графический браузер (например, Firefox), это отображается в виртуальном X-сервере (Xvfb). Посмотрите, Как я могу запустить Firefox на Linux невнимательно (т.е. не требуя libgtk-x11-2.0.so.0)?, и возможно также, Как я запускаю Xvfb на запуске на Debian?.
Elinks является браузером текстового режима с дополнительной поддержкой JavaScript. Версия в Ubuntu 8.04 компилируется без поддержки JS, таким образом, необходимо было бы скомпилировать собственное и связать ее с библиотекой Mozilla SpiderMonkey JavaScript. Эти инструкции в руководстве могут помочь.
Сценарий, который Вы отправили, преобразовывает 4*n пробелы в n вкладки, только если тем пробелам предшествуют только вкладки.
Если Вы хотите заменить 4 пробелов 2 пробелами, но только в добавлении отступа, в то время как возможно сделать это с sed, я рекомендую Perl вместо этого.
perl -pe 's{^((?: {4})*)}{" " x (2*length($1)/4)}e' file
В sed:
sed -e 's/^/~/' -e ': r' -e 's/^\( *\)~ /\1 ~/' -e 't r' -e 's/~//' file
Можно хотеть использовать indent
вместо этого.
Не делает простого пути работа:
sed -r 's/ {4}/ /g'
В противном случае отправьте некоторый вход, где он перестал работать.
Если только продвижение пробелов должно быть преобразовано:
sed 'h;s/[^ ].*//;s/ / /g;G;s/\n *//'
С комментариями:
sed '
h; # save a copy of the pattern space (filled with the current line)
# onto the hold space
s/[^ ].*//; # remove everything starting with the first non-space
# from the pattern space. That leaves the leading space
# characters
s/ / /g; # substitute every sequence of 4 spaces with 2.
G; # append a newline and the hold space (the saved original line) to
# the pattern space.
s/\n *//; # remove that newline and the indentation of the original
# line that follows it'
Также взгляд на энергию 'ts'
установка и :retab
команда
'ts'
и :retab
не решения вопроса, но связаны и могут помочь обратиться к Вашей полной цели. Можно сделать vim -- *.c
, :set ts=...
и затем :argdo retab
или :argdo retab!
. См. также 'sw'
опция и собственные возможности расположения с отступом энергии.
– Stéphane Chazelas
10.09.2012, 18:15
sed 's/ \{2,4\}\( \{0,1\}[^ ].*\)*/ \1/g' <input
Это должно только сжимать ведущие последовательности пробелов.
sed 's/^\( \+\)\1\1\1/\1\1/' file
Он работает, разделяя ведущие пробелы на четыре экземпляра одной и той же группы (, чтобы они все были равны ), а затем заменяя их только двумя экземплярами группы.
Nested quantifiers in regex; marked by <-- HERE in m/^( {4}* <-- HERE )/ at -e line 1.
– eddygeek 29.03.2017, 14:25