Как объединить несколько CSV-файлов в CSV-файл, используя Tcl - PullRequest
0 голосов
/ 02 июля 2018

Я попытался объединить все похожие файлы CSV, используя TCL

exec /bin/cat checked_*.csv > check_all.csv

но результат показывает:

/ bin / cat: проверено _ *. Csv: нет такого файла или каталога

при выполнении

"exec / bin / cat check _ *. Csv> check_all.csv" (файл "test.tcl", строка 80)

Ответы [ 4 ]

0 голосов
/ 03 июля 2018

Быстрое и грязное решение: запустите оболочку, чтобы справиться с перетаскиванием и перенаправлением:

exec /bin/sh -c {/bin/cat checked_*.csv > check_all.csv}
0 голосов
/ 02 июля 2018

Команда exec не раскрывает имена файлов, как это делает оболочка, поэтому cat просто получает строку checked_*.csv. Я думаю, что

exec /bin/cat {*}[glob checked_*.csv] > check_all.csv

будет работать лучше (хотя я на Windows). Требуется Tcl 8.5 или более поздняя версия из-за расширения.

Я бы порекомендовал

package require fileutil

::fileutil::writeFile check_all.csv [::fileutil::cat {*}[glob -nocomplain checked_*.csv]]

кстати.

0 голосов
/ 02 июля 2018

Хм, может быть, чистый раствор Tcl?

set files [glob checked_*.csv]
set fout [open "check_all.csv" w]

foreach file $files {
    set fin [open $file r]
    fcopy $fin $fout
    close $fin
}

close $fout

РЕДАКТИРОВАТЬ: поменялся местами puts $fout [read $fin] для fcopy $fin $fout благодаря Гленн Джекман.

0 голосов
/ 02 июля 2018

вам нужен exec с полным путем вашего *.csv, например

exec /bin/cat /home/s/pathtofile/checked_*.csv > check_all.csv
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...