Как добавить двойную -кавычку к пути корзины s3 в файле.tsv с помощью sed/awk в оболочке bash

Очень старый пост, но тем не менее:

  • Whisker Menu-теперь средство запуска меню Xfce по умолчанию, может находить только приложения (, то есть .desktopфайлы, созданные в usr/local/share/applicationsи ~/.local/share/applications), но не файлы и папки, как krunner.

  • Synapse-не специфичен для Xfce -, но в любом случае, вероятно, лучший лаунчер, по крайней мере, для среды gtk, соответствует стандартам krunner. Чтобы запустить его с помощью клавиши Super, следуйте этому ответу.

1
02.11.2021, 22:48
2 ответа

Использование любого awk в любой оболочке на каждом компьютере Unix:

$ awk -F'\t' -v OFS='"\t"' '{print "\"" $1, $2 "\""}' file
"s3://data01/repo01/image live01.png"   "s3://Ata01/vol01/image live01.png"
"s3://data02/repo01/image live01.png"   "s3://Ata02/vol01/image live01.png"
"s3://data03/repo01/image live01.png"   "s3://Ata03/vol01/image live01.png"

Вышеприведенное предполагает, что ни одно из ваших имен файлов не содержит табуляции, новой строки или двойных кавычек.

1
03.11.2021, 03:00

Обработка данных как CSV-файла с использованием табуляции в качестве разделителей полей:

csvformat -tT -U1 file.tsv >newfile.tsv

Это использует csvformatиз csvkit для чтения вкладки -ввода с разделителями(-t)и создает вывод с разделителями табуляции -(-T), который заключен в кавычки(-U1)независимо от того, является ли CSV требуется формат или нет.

Преимущество обработки файла как файла CSV и использования анализатора CSV для цитирования полей заключается в том, что поля не заключаются в двойные кавычки, если они уже заключены в кавычки.

$ cat file.tsv
"s3://data01/repo01/image live01.png"   s3://Ata01/vol01/image live01.png
s3://data02/repo01/image live01.png     s3://Ata02/vol01/image live01.png
s3://data03/repo01/image live01.png     s3://Ata03/vol01/image live01.png
$ csvformat -tT -U1 file.tsv
"s3://data01/repo01/image live01.png"   "s3://Ata01/vol01/image live01.png"
"s3://data02/repo01/image live01.png"   "s3://Ata02/vol01/image live01.png"
"s3://data03/repo01/image live01.png"   "s3://Ata03/vol01/image live01.png"

Очевидно, вы также можете просто прочитать данные как есть и добавить двойные кавычки при вызове s3 cp. Я не знаю, как выглядит эта команда, но...

while IFS=$'\t' read -r src dst; do
    s3 cp "\"$src\"" "\"$dst\""
done <file.tsv
0
03.11.2021, 06:29

Теги

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