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'