Преобразование файлов в нескольких каталогах из файлов, разделенных табуляцией, в файлы, разделенные запятыми

За годы работы у меня накопилось большое количество .debпакетов с нестандартными -именами, и я не помню, чтобы сталкивался с какими-либо проблемами. «Известные» пакеты с нестандартными именами -, с которыми люди могут столкнуться в настоящее время, включают google-chrome-stable_current_amd64.debи steam.deb. (В обоих случаях фиксированное имя без версии гарантирует, что стабильный URL-адрес можно использовать для загрузки, а стабильное имя — для инструкций по установке.)

Однако я не не помню, чтобы встречались с пробелами в именах; это также не должно вызывать проблем с инструментами, но может вызвать путаницу у ваших пользователей (, поскольку им нужно будет заключать имя файла в кавычки или экранировать пробелы, если они используют инструменты на основе оболочки -).

Следует также отметить, что использование нестандартного имени -, которое не совпадает с именем вашего пакета (, хранящимся в файле control), также может вызвать путаницу, , например. при попытке удалить пакет (, так как имя пакета не будет совпадать с именем, используемым для его установки ).

В результате всего этого, если вы не хотите придерживаться канонического имени, я бы рекомендовал что-то вроде my-program.debилиmy-program_amd64.deb(в зависимости от того, хотите ли вы поддерживать несколько архитектур ).Вы также можете сделать это символической ссылкой на имя файла с версией, если хотите разрешить загрузку более старых версий.

1
17.06.2021, 19:32
2 ответа

Если вы можете безопасно запустить это для всех подкаталогов и всех файлов в этих подкаталогах, все, что вам нужно, это:

sed -i "" 's/\t/,/g' /Users/sethparker/Documents/*/*
1
28.07.2021, 11:24

Для обработки крайних случаев (, таких как табуляция, появляющаяся в кавычках, или запятая, появляющаяся в поле без кавычек ), для данных CSV рекомендуется анализатор CSV.

Использованиеcsvkitspongeиз пакета moreutils)

for file in glob_pattern; do
    csvformat --tabs --out-delimiter, "$file" | sponge "$file"
done

Демо:

$ cat input.tsv
first   "second third"  fourth
she said    Hello, world!

В первой строке есть табуляция в кавычках

$ csvformat --tabs --out-delimiter, input.tsv
first,second    third,fourth
she,said,"Hello, world!"
2
28.07.2021, 11:24

Теги

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