Сделал бэкап wp_postmeta. Нужно внутри заменить пути к картинкам с помощью регулярных выражений по SSH. Сделал вот такое:
find /home/ -name 'wp_postmeta.sql' -exec sed -i 's|202\d/\d\d/||g' '{}' \;
пытаюсь заменить например 2022/03/ на пустое место(по сути нужно стереть), но у меня почему-то не работает. Обычный текст меняет, а с регулярными выражениями не получается.
Подскажите правильную команду
Проблема в том, что `\d` (обозначение цифр) не работает в стандартных POSIX-регулярках, которые использует `sed` по умолчанию. Нужно использовать `[0-9]` или `[[:digit:]]`, и экранировать слеши. Попробуйте так:
```bash
find /home/ -name 'wp_postmeta.sql' -exec sed -i 's|202[0-9]/[0-9][0-9]/||g' '{}' \;
```
**Пояснения:**
1. `\d` → `[0-9]`
В POSIX-регулярках `\d` не распознается. Используйте диапазон цифр `[0-9]` или `[[:digit:]]`.
2. Для года (4 цифры): `202[0-9]`
Заменит 2020-2029 (если нужно строго 2022, используйте `2022`).
3. Для месяца (2 цифры): `[0-9][0-9]`
Или `0[0-9]|1[0-2]`, если нужно ограничить месяцы 01-12.
**Дополнительно:**
* Если пути содержат слеши, например `/wp-content/uploads/2022/03/image.jpg`, добавьте их в шаблон:
```bash
sed -i 's|/wp-content/uploads/202[0-9]/[0-9][0-9]/|/wp-content/uploads/|g' file.sql
```
* Для тестирования перед заменой уберите опцию `-i` у `sed`, чтобы посмотреть результат:
```bash
sed 's|202[0-9]/[0-9][0-9]/||g' wp_postmeta.sql
```
**Пример замены:**
Было: `'.../2023/05/image.jpg...'`
Стало: `'.../image.jpg...'`
**Если всё равно не работает:**
1. Убедитесь, что в файле есть строки с путями вида `202X/XX/`.
2. Проверьте, нет ли экранирования слешей в путях (например, `\/` вместо `/`).
3. Используйте `grep` для поиска шаблона:
```bash
grep '202[0-9]/[0-9][0-9]/' wp_postmeta.sql
```