Эта статья может быть полезна в зависимости от используемой версии PostGRES. Индексация PostGRES для подведения итогов:
База данных объединит столько же индексов в одной строке для оптимизации, но все равно будет должны перекрестные ссылки на полные строки. Если вы знаете, что некоторые комбинации строк будут более популярными, чем другие, я бы сделал комбинированные индексы для них, чтобы повысить производительность. Если вы не вставляете в таблицу, много индексов не должно повредить.
Ваши два примера выглядят идентичными, который делает проблемы трудно для диагностирования. Потенциальные проблемы:
Вам, возможно, понадобятся двойные кавычки, поскольку в sed 's/xxx/'"$PWD"'/'
$PWD
может содержать наклонную черту, в этом случае необходимо найти символ не содержавшимся в $PWD
для использования в качестве разделителя.
Для закрепления обеих проблем сразу, возможно
sed 's@xxx@'"$PWD"'@'
С Вашим редактированием вопроса я вижу Вашу проблему. Скажем, текущий каталог /home/yourname
... в этом случае, Ваша команда ниже:
sed 's/xxx/'$PWD'/'
будет расширен до
sed `s/xxx//home/yourname//
, который не допустим. Необходимо поместить \
символ перед каждым /
в $PWD, если Вы хотите сделать это.
В дополнение к ответу Нормана Рэмси я хотел бы добавить, что вы можете заключить в кавычки всю строку (что может сделать это выражение более читабельным и менее подверженным ошибкам).
Поэтому, если вы хотите найти 'foo' и заменить его содержимым $ BAR, вы можете заключить команду sed в двойные кавычки.
sed 's/foo/$BAR/g'
sed "s/foo/$BAR/g"
В во-первых, $ BAR не будет правильно расширяться, а во втором $ BAR будет расширяться правильно.