Как передать аргументы в lzip через tar?

В этом случае вам нужно действовать осторожно, так как у вас есть два слоя чередующихся кавычек:

        |-------------------------- 1 ------------------------|--2 --|------------- 3 ----------|--4 --|----- 5 ----|
awk -F, '{printf "update my_table_user set thirdparty_user_id='\'%s\'' where thirdparty_user_id='\'%s\'';\n", $2,$3}' yourcsvfile

Обратите внимание, что области 2 и 4 являются пробелами (без кавычек ), и туда мы вставляем наши одинарные кавычки и строки %s. Области 1,3,5 являются сбалансированными парами в одинарных кавычках. Области 1..5 являются смежными. Мы можем поместить %s в пробел как есть, поскольку они не являются метасимволами оболочки, такими как *? $ [ иначе нам пришлось бы экранировать их или помещать в непробельные области, такие как 3.

Другим способом является предоставление цитаты через переменную awk:

awk -F, -v q=\' '{v2=q $2 q;v3=q $3 q;printf "update my_table_user set thirdparty_user_id=%s where thirdparty_user_id=%s;\n", v2,v3}' yourcsvfile

Здесь мы сначала создаем одиночные -кавычки, заключенные в кавычки, и затем используем их в нашем printf. Я считаю, что это более удобно -для пользователя.

1
01.08.2019, 19:08
1 ответ

Вы можете использовать опцию tar's -I, указав "программу сжатия":

tar -cvf archive.lz -I 'lzip -9' file1.txt file2.txt

Или вы можете направить вывод tarчерезlzip:

tar -cvf - file1.txt file2.txt | lzip -9 > archive.lz

Оба варианта описаны в GNU tar manual(поиск первого-I).

2
27.01.2020, 23:30

Теги

Похожие вопросы