2014-09-07 2 views
0

Я знаю, что это довольно простая задача для любого продвинутого программиста Vim, но я пытаюсь найти решение в течение нескольких часов.Замените pwd USER в файле

В моем файле результатов, есть определенные строки:

/Users/name/Project/Task1/folder1 : INFO : Random Info message 

Здесь /Users/name/Project/Task1/folder1 мой pwd т.е. настоящий рабочий каталог.

Я хочу заменить все вхождения моего pwd выше в файле «USER». Как я могу это сделать?

ответ

1

Если я вас правильно понимаю, вы можете просто использовать search and replace functionality и избежать / характер, как это:

:%s/\/Users\/name\/Project\/Task1\/folder1/USER/ 

Если вам необходимо заменить несколько текущих рабочих каталогов (и, таким образом, хотят иметь pwd быть динамичным) это, вероятно, проще использовать что-то вроде sed:

sed "s~$(pwd)~USER~" < file 

Обратите внимание, что ~ используется в качестве разделителя для команды вместо /, таким образом нам не нужно избегать / в пути.

+0

Спасибо. Я знаю основной поиск и замену. Мне нужно было подтвердить, есть ли способ использовать $ pwd output в команде поиска и замены. –

+0

Я попробовал команду 'see', которую вы упомянули, но она не работает, поскольку в именах каталогов есть пробелы в именах' pwd'. Он дает следующую ошибку: 'sed: 1:" s ~/Users/name/Box ": unterminited substitute pattern' –

+0

Неплохо, шаблон' sed' должен быть в '' ', я добавил их в ответ сейчас. – ebo

1
:%[email protected]/Users/name/Project/Task1/[email protected]@g 

или

:%[email protected]<C-r>=getcwd()<CR>@[email protected] 
+0

Я не хочу попробовать первую команду, потому что она ручная и потребуется время для исправления, потому что у меня есть длинные пути и пробелы в пути. –

+0

Я попробовал вторую команду, но получил следующую ошибку: 'E486: шаблон не найден: = getcwd() ' –

+0

Тип Ctrl + R then = getcwd(), затем Enter. – romainl

Смежные вопросы