2016-05-04 2 views
0

Я пишу сценарий BASH, в котором я хочу использовать sed, чтобы заменить полный путь файла в текст.Используйте команду sed вместе с readlink (или simmilar), чтобы заменить полный путь на текст

настоящее время у меня это:

Path= readlink -e /home/user/Videos/*.mp4 
sed -i "s/original_text/$Path/g" /home/user/Documents/Text.txt 

Идея заключается в том, чтобы заменить путь один MP4 видео (есть не другие видео в этой папке) в текстовый файл, поэтому я не придется записывайте имя видео каждый раз, когда я хочу его заменить.

Я пробовал различные варианты этой проблемы, но я не могу заставить ее работать.

Заранее спасибо.

+0

что это ошибка, которую вы получаете? – fedorqui

ответ

1

Используйте подмена команду, чтобы сохранить вывод команды в переменную:

Path="$(readlink -e /home/user/Videos/*.mp4)" 

Также оболочка не поддерживает пространство (ы) вокруг = при объявлении переменных.


Если у вас есть несколько файлов, лучше использовать массив:

Paths=($(readlink -e /home/user/Videos/*.mp4)) 

и получить доступ к элементам массива с помощью "${Paths[@]}"

+0

Большое вам спасибо, работает как шарм – Cris

1

Я считаю, что ваш $Path имеет slash(/) в значение, например /home/user/Videos/foo.mp4, это приведет к сбою вашего sed. Вы можете использовать другой разделитель для команды sed s.

Попробуйте SED строку:

sed -i "[email protected][email protected][email protected]" /home/user/Documents/Text.txt 

также следует процитировать вашу команду readlink и удалить пространство сразу после =

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