1

Я недавно скачал шаблон веб-сайта для фотоальбома и хочу, чтобы мой не технически подкованный помощник по жизни легко добавлял фотографии.

Он использует XML-файл, который требует редактирования каждый раз, когда добавляются фотографии, а написанный мной скрипт обновления почти готов, просто нужно изменить все его одинарные кавычки (') на двойные кавычки (").

Я нашел и поиграл с sed "s/\"/'/g" безрезультатно, получив" неопределенную ошибку цитаты ". Любая помощь будет принята с благодарностью.

2 ответа2

3

Вам нужна одиночная кавычка с обратной косой чертой, кроме одинарных кавычек:

sed 's/"/'\''/g'

Когда строки сопоставляются, они становятся одной строкой. Таким образом, вы можете цитировать части по-разному, используя «» или «или».

2

Вы можете использовать для tr tr anslate из одного набора символов в другой. (Примечание: это набор символов, как в "наборе символов", а не в "кодировке символов и связанных с ней глифах", таких как ISO-8859-1.) Вам почти наверняка не нужно использовать sed и регулярные выражения для этого.

Ваш вопрос несколько неясен в отношении того, в каком направлении вы хотите двигаться, потому что команда sed будет действовать противоположно тому, что вы называете своей целью, но вы можете использовать перевод ' с " (избегая здесь бесполезного использования cat):

tr \' \" <inputfile >outputfile

Для перевода с " на ' вместо этого используйте:

tr \" \' <inputfile >outputfile

Обратите внимание, что обратная косая черта важна, поскольку она защищает кавычки от интерпретации специально оболочкой. К тому времени, когда tr увидит параметры, обратные слеши будут удалены.

Будьте осторожны, чтобы не слепо переписать весь XML-файл; это может вызвать нежелательное поведение.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .