Скопируйте огромный файл, пропустив первую строку, используя dd в Linux
Я пытался скопировать содержимое огромного файла (10 ГБ) в другой, пропуская первую строку (как в head -n1
). Я пробовал несколько способов головы, хвоста, awk и sed. Решено на использование tail -n+2 > ./xab.1
см. ссылку1 ссылку2 ссылку3. Но обработка занимает время журнала. Более того, чтобы cp
,
Я просто хочу слепо копировать содержимое, вот и все. Я так думаю dd
сделаю работу, но я в растерянности, осуществляя это. Любая помощь?
Ну, чтобы дать больше контекста, файл CSV, и я думаю, что делать, dd if=/dev/zero of=/path/to/file bs=1 seek=1 count=<<length(head -n1 /path/to/file)>> conv=notrunc
должно сработать.
Но как заставить это работать??
РЕДАКТИРОВАТЬ: Итак, вот то, что я до сих пор придумал, (да, я знаю, что я потеряю несколько записей. Но это не имеет значения)
#!/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`