Copia um arquivo enorme pulando a primeira linha usando o dd no Linux

0

Eu estava tentando copiar o conteúdo de um arquivo enorme (10 GB) para outro, ignorando a primeira linha (como em head -n1 ). Eu tentei várias maneiras de cabeça, cauda, awk e sed. Resolvido usando tail -n+2 > ./xab.1

veja link1 link2 link3 . Mas o processamento está demorando um tempo de log. Mais do que isso leva para cp .

Eu só quero copiar cegamente o conteúdo, tudo isso. Então eu acho que dd fará o trabalho mas eu estou com prejuízo para implementá-lo. Alguma ajuda?

Bem, para dar mais contexto, o arquivo é CSV e, por isso, acho que dd if=/dev/zero of=/path/to/file bs=1 seek=1 count=<<length(head -n1 /path/to/file)>> conv=notrunc deve funcionar.

Mas como fazer isso funcionar?

EDITAR: Então aqui está o que eu tenho feito até agora (sim, eu sei que vou perder alguns registros. Mas isso não importa)

#!/bin/bash
echo "Initiating xaa." 'date'
head -n3 /stage/csv/dev/data/csv_huge/xaa > /stage/csv/dev/data/csv_huge/csv/header
tail -n3 /stage/csv/dev/data/csv_huge/xbc > /stage/csv/dev/data/csv_huge/csv/trailer
sed -i '$ d' /stage/csv/dev/data/csv_huge/xaa
cat /stage/csv/dev/data/csv_huge/csv/trailer >> /stage/csv/dev/data/csv_huge/xaa
mv /stage/csv/dev/data/csv_huge/xaa /stage/csv/dev/data/csv_huge/csv/xaa
echo "Completed xaa." 'date'
sed -i 1d /stage/csv/dev/data/csv_huge/xab
sed -i '$ d' /stage/csv/dev/data/csv_huge/xab
cat /stage/csv/dev/data/csv_huge/csv/header /stage/csv/dev/data/csv_huge/xab > /stage/csv/dev/data/csv_huge/csv/xab
cat /stage/csv/dev/data/csv_huge/csv/trailer >> /stage/csv/dev/data/csv_huge/csv/xab
rm -f /stage/csv/dev/data/csv_huge/xab
echo "Completed xab." 'date'
sed -i 1d /stage/csv/dev/data/csv_huge/xbc
cat /stage/csv/dev/data/csv_huge/csv/header /stage/csv/dev/data/csv_huge/xbc > /stage/csv/dev/data/csv_huge/csv/xbc
echo "Completed xbc." 'date'
    
por Jimson Kannanthara James 29.01.2015 / 17:33

0 respostas

Tags