В этом случае вам нужно действовать осторожно, так как у вас есть два слоя чередующихся кавычек:
|-------------------------- 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. Я считаю, что это более удобно -для пользователя.
Вы можете использовать опцию 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
).