Как объединить несколько файлов одного формата в один файл? [dубликат]

Я не тестировал его, но Neon Project предлагает Ubuntu PPA с бета-версиями и RC-пакетами.

0
задан 31 July 2017 в 13:56

9 ответов

Вы можете использовать awk для конкатенации файлов, пропуская первую строку каждого файла, если это не первая строка всех файлов.

Например, если файлы называются part-00000 через part-00199, затем

awk 'FNR==1 && NR!=1 {next} {print}' part-{00000..00199}
2
ответ дан 22 May 2018 в 19:59
  • 1
    Имена файлов изменяются между part-00000 и part-00199. Как изменить количество 0 в заголовках? – Dinosaurius 31 July 2017 в 14:07
  • 2
    Глобулизация (например, *) упорядочена логически, поэтому awk ... part-* должен быть безопасным. – Oli♦ 31 July 2017 в 14:11

Вы можете использовать awk для конкатенации файлов, пропуская первую строку каждого файла, если это не первая строка всех файлов.

Например, если файлы называются part-00000 через part-00199, затем

awk 'FNR==1 && NR!=1 {next} {print}' part-{00000..00199}
2
ответ дан 18 July 2018 в 09:21

Вы можете использовать awk для конкатенации файлов, пропуская первую строку каждого файла, если это не первая строка всех файлов.

Например, если файлы называются part-00000 через part-00199, затем

awk 'FNR==1 && NR!=1 {next} {print}' part-{00000..00199}
2
ответ дан 24 July 2018 в 19:18

Я бы захватил заголовки из одного из файлов, а затем захватил все, начиная с строки 2, из всех файлов.

head -1 part-00000 > output.csv
tail -n +2 part-* >> output.csv
2
ответ дан 22 May 2018 в 19:59
  • 1
    Я протестировал его. Я получаю такие строки, как ==> output.csv <== ==> part-00000 <== в output.csv. Мои файлы не имеют расширения, поэтому я заменил вашу вторую строку кода на эту tail -n +2 * >> output.csv, но результат был неверным, как я объяснил. – Dinosaurius 31 July 2017 в 14:11
  • 2
    Я бы предположил, что что-то еще в каталоге содержит это. part-* безопаснее. Я обновил ответ. – Oli♦ 31 July 2017 в 14:14

Простая альтернатива другим решениям использует cat и grep как:

cat * | grep -v '^col1,col2' > newfile
1
ответ дан 22 May 2018 в 19:59

Я бы захватил заголовки из одного из файлов, а затем захватил все, начиная с строки 2, из всех файлов.

head -1 part-00000 > output.csv tail -n +2 part-* >> output.csv
2
ответ дан 18 July 2018 в 09:21

Простая альтернатива другим решениям использует cat и grep как:

cat * | grep -v '^col1,col2' > newfile
1
ответ дан 18 July 2018 в 09:21

Я бы захватил заголовки из одного из файлов, а затем захватил все, начиная с строки 2, из всех файлов.

head -1 part-00000 > output.csv tail -n +2 part-* >> output.csv
2
ответ дан 24 July 2018 в 19:18
  • 1
    Я протестировал его. Я получаю такие строки, как ==> output.csv <== ==> part-00000 <== в output.csv. Мои файлы не имеют расширения, поэтому я заменил вашу вторую строку кода на эту tail -n +2 * >> output.csv, но результат был неверным, как я объяснил. – Dinosaurius 31 July 2017 в 14:11
  • 2
    Я бы предположил, что что-то еще в каталоге содержит это. part-* безопаснее. Я обновил ответ. – Oli♦ 31 July 2017 в 14:14

Простая альтернатива другим решениям использует cat и grep как:

cat * | grep -v '^col1,col2' > newfile
1
ответ дан 24 July 2018 в 19:18

Другие вопросы по тегам:

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