Эксперт we process our csv восходит, we произведись в lot of output поля with 30 000 lines in each one of them. They all have the same columns/fields. They пахал all also in csv format and we удар в лунку them into the same folder on the Linux server. The поля пахал uniquely named using в combination of восходите, украдите and numeric digits. See below.
AB_20151127_120000_0_SEGMENT_FINAL.csv
AB_20151127_120000_1_SEGMENT_FINAL.csv
AB_20151127_120000_2_SEGMENT_FINAL.csv
AB_20151127_120000_3_SEGMENT_FINAL.csv
.
.
.
AB_20151127_120000_599_SEGMENT_FINAL.csv
So now we need to merge/join all of them into one big file called: AB_20151127_120000_SEGMENT_FINAL.csv
(я заметил the missing numeric digits from the merged file)
I tried awk
эксперт below but it is not working. Please tell я what I did wrong.
awk '"AB_20151127_120000_" NR-1 "_SEGMENT_FINAL.csv"' > AB_20151127_120000_SEGMENT_FINAL.csv
Если порядок, в котором связываются файлы, не важен, используйте:
cat AB_20151127_120000_*_SEGMENT_FINAL.csv > AB_20151127_120000_SEGMENT_FINAL.csv
, Если порядок важен, необходимо будет стать творческими. Если Вы знаете количество сегментов, 599, например, можно использовать расширение фигурной скобки (эти \
, только там, чтобы позволить мне распечатать команду на двух строках для удобочитаемости):
cat AB_20151127_120000_{0..599}_SEGMENT_FINAL.csv > \
AB_20151127_120000_SEGMENT_FINAL.csv
, Если Вы не делаете, можно все еще использовать расширение фигурной скобки. Просто выберите достаточно большое количество, чтобы быть уверенными, что все файлы будут включены и проигнорируют сообщения об ошибках о несуществующих файлах:
cat AB_20151127_120000_{0..599}_SEGMENT_FINAL.csv > \
AB_20151127_120000_SEGMENT_FINAL.csv 2>/dev/null
, С другой стороны, можно генерировать список отсортированных имен файлов и использования что:
cat $(printf '%s\n' AB_20151127_120000_*_SEGMENT_FINAL.csv | sort -nt_ -k4) > \
AB_20151127_120000_SEGMENT_FINAL.csv
Эти printf
распечатает каждое имя файла, сопровождаемое новой строкой, которая является переданным sort
, который отсортирует его численно (-n
) на 4-м поле (-t4
), где поля определяются _
(-t_
).
Если у Вас есть доступ к оболочке Zsh, задача может быть уменьшена до единственной команды:
cat AB_20151127_120000_*(n)_SEGMENT_FINAL.csv >AB_20151127_120000_SEGMENT_FINAL.csv
Это вызвано тем, что (n)
globbing спецификатор вынуждает *
globbing шаблон расшириться до списка имен файлов, отсортированных в их естественном порядке, в противоположность их лексикографическому порядку.
Для сравнения, расширения имени файла в Bash:
$ for f in *; do echo "$f"; done
AB_20151127_120000_0_SEGMENT_FINAL.csv
AB_20151127_120000_10_SEGMENT_FINAL.csv
AB_20151127_120000_1_SEGMENT_FINAL.csv
AB_20151127_120000_2_SEGMENT_FINAL.csv
AB_20151127_120000_3_SEGMENT_FINAL.csv
расширение Имени файла в Zsh с помощью (n)
globbing спецификатор:
% for f in *(n); do echo "$f"; done
AB_20151127_120000_0_SEGMENT_FINAL.csv
AB_20151127_120000_1_SEGMENT_FINAL.csv
AB_20151127_120000_2_SEGMENT_FINAL.csv
AB_20151127_120000_3_SEGMENT_FINAL.csv
AB_20151127_120000_10_SEGMENT_FINAL.csv