2014-11-03 4 views
-1

мне нужно изменить несколько строк в заданном формате в VIM/Баш:
фактический я/р: %localdate%,%localtime%,%uptime%
желательно о/р: localdate=%localdate%,localtime=%localtime%,uptime=%uptime%
дублирующие несколько частей строки в VIM/Баш

Там это 100s таких переменных, которые необходимо изменить в файле. Pls предлагает подход в bash/vim.

+0

Вы что-то пробовали? Показывая свои попытки и описывая, с какими частями вы испытываете трудности, мы лучше понимаем ваше мастерство и можем дать более точный ответ. Как бы то ни было, это похоже на то, что вы отправили требование и хотите, чтобы кто-то написал вам свой код. –

+0

Да, я пробовал несколько вещей, но не мог добиться этого. Прежде чем спросить, я упомянул http://stackoverflow.com/questions/7098364/need-to-duplicate-text-in-each-line-and-add-equal-sign-and-prefix-to-it/7099631#7099631 –

ответ

2

Вы можете попробовать этот способ

:%s/\(%\(\w*\)%\)/\2=\1/g 

Объяснение:

\(%\(\w*\)%\) -- Grouping the pattern "%localdate%" 
(\w*\)   -- Grouping the pattern between the %string% line "localdate" only 
\2=\1   -- Print the matched pattern group 2 and group 1 like "localdate=%localdate%" 

Выход:

localdate=%localdate%,localtime=%localtime%,uptime=%uptime% 
+0

да, это сработало. Благодаря! –

+0

Добро пожаловать;) - – Kalanidhi

0

Try:

awk -F',' '{for (i=1;i<=NF;i++) {myvar=substr($i, 2, length($i)-2); printf("%s=%s,", myvar,$i)}print ""}' test.txt | sed 's/,$//' 
Смежные вопросы