Portál AbcLinuxu, 4. června 2025 06:51
Řešení dotazu:
tail -n 1000000> new_file.txt *>old_file.txt cat new_file.txt>old_file.txtAle to je elegantné riešenie. Teda ... keď sa to fixne tak, aby to bolo správne
tail -n 1000000 old_file.txt > new_file.txt ; mv new_file.txt old_file.txt
Čo sa ti na tom nezdá? Dá sa to trocha optimalizovať, ak použiješ dd a vypočítaš si nejakú rozumnú hodnotu pre parameter skip= a obetuješ to, že prvý riadok vo výsledku asi nebude celý. Ale inak by som nad tým moc nešpekuloval.
sed -n "$((`cat old_file.txt | wc -l` - 1000000)),$p" >new_file.txtVnitřek spočítá řádky ve vstupním souboru, bashovský výraz od toho odečte milion a sed potom vypíše jenom řádky od čísla, které vyšlo, do konce souboru.
tail -n 1000000 > new_file.txt && mv new_file.txt old_file
$ du -m bigone
5423 bigone
$
$ wc -l bigone
61998618 bigone
$
$ time tail -1000000 bigone > keepem
real 0m0.454s
user 0m0.077s
sys 0m0.267s
$ wc -l keepem
999999 keepem
$
islo to rychlo kvoli tomu, ze som zobral staru ukradnutu DB orange/eurotel cisel z textoveho suboru, ktoru som niekolkokrat catol do tohto velkeho (cat orange1 orage2 eurotel1 eurotel2 .. > bigone
), co trvalo asi 10sekund; nasledne som urobil tail
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.