только что заработало, postgres pgdumpall
в файл 7zip :используйте set pgpassword=xxxxx
перед вводом команды:
pg_dumpall -U postgres | c:\"program files"\7-Zip\7z.exe a -si e:\directory\output.file.sqlc
на его сброс и сжатие ушло всего 4 дня! 50201104790 байт (47 ГБ)
Если профили разделены пустыми -, то вы можете использовать awk в режиме абзаца напр.
$ awk -v RS= -v p='[uat]' '$1 == p' yourfile
[uat]
region = us-east-2
output = json
Perl в «режиме абзаца»:
$ perl -00 -ne 'print if /\[default\]/' file
[default]
region = us-east-1
output = json
или
$ perl -00 -ne 'print if /\[prod\]/' file
[prod]
region = us-east-1
output = json
Вы можете превратить это в функцию оболочки, добавив эти строки в файл инициализации вашей оболочки (, например~/.bashrc
):
searchawsconfig(){
perl -00 -ne 'print if /\['"$1"'\]/' "$2"
}
Затем вы можете:
$ searchawsconfig prod file
[prod]
region = us-east-1
output = json
реферат:
awk '$1==p' RS= p='[default]'./tst
Использование режима абзаца для разделения входного файла на записи, разделенные "пустой строкой" (на две последовательные\n
).
Вы можете выполнить сопоставление с регулярным выражением с помощью (экранирования []
, поскольку они являются специальными в регулярном выражении)(используйте ^
для обозначения начала строки):
awk -vRS='' '/^\[default\]/'./tst
Или вы можете выполнить сопоставление текста (полный первая строка )с:
awk -vRS='' '$1 == "[default]"'./tst
Или (более гибко )использовать переменные, установленные в командной строке:
awk '$1==p' RS= p='[default]'./tst
Обязательно используйте какую-либо форму пути, например относительный путь ./
, чтобы имя файла анализировалось как имя файла, даже если оно содержит =
.
Или, используя переменные окружения:
RS='' SECTION='default' \
awk 'BEGIN{RS=ENVIRON["RS"]} $1=="[" ENVIRON["SECTION"] "]" ' \
./tst