У меня в файле строки, такие как img src="../image/popup.jpg"
, или bg: 'images/xxx/popup.png'
. Я хотел бы заменить весь Filepath/имя с другой строкой с СЭД, я попыталсяsed заменить имя файла начинается с цитаты
sed 's/^"[^\s]*/somethingelse/g'
У меня в файле строки, такие как img src="../image/popup.jpg"
, или bg: 'images/xxx/popup.png'
. Я хотел бы заменить весь Filepath/имя с другой строкой с СЭД, я попыталсяsed заменить имя файла начинается с цитаты
sed 's/^"[^\s]*/somethingelse/g'
Попробуйте вместо этого,
sed 's|/some/UNIX/path|/a/new/path|g' files
При использовании СЭД для замены имен путей, изменяя его по умолчанию demiliter помогает, так как отметил Скайнет, и разумное использование одинарных кавычек позволяет переменной интерполяции, как это:
> a="\"hello/bye\""
> b="\"one/two\""
> echo $a
"hello/bye"
> echo $b
"one/two"
> echo $a|sed -e 's|'$a'|'$b'|'
"one/two"
от http://linux.die.net/man/1/sed SED не поддерживает POSIX. 2 основных регулярных выражения «полностью из-за проблем с производительностью», однако он приближается. Согласно http://www.regular-expressions.info/posix.html, одним из правил регулярных выражений POSIX является «Использование обратной косой черты, чтобы избежать символа, который никогда не является метасимволом, является ошибкой». Поскольку двойные и одинарные кавычки не являются метасимволами, они не должны быть обратно спящими в POSIX-regexes в соответствии с этим.
Использование sed
с BRE:
sed "s/\([\"']\)[^\"']*\([\"']\)/\1somethingelse\2/g" file
С ЭРД:
sed -r "s/([\"'])[^\"']*([\"'])/\1somethingelse\2/g" file
Принято считать, что нет спасся цитаты в имени файла, т.е. нет цитаты внутри "..."
и '...'
Я знаю только о имени файла , но путь должен соответствовать регулярному выражению –
Можете ли вы просто заменить двойные кавычки одинарными кавычками по всему миру? Имена файлов сложны, потому что они могут содержать экранированные кавычки. Если это html, вам может быть лучше использовать html-парсер. Или sub images/xxx с чем-то .. Также см. Это http://stackoverflow.com/questions/11794144/regular-expression-for-valid-filename –