Я хочу напечатать первые 10 строк огромного файла в новом файле. С этой Oneliner я могу напечатать строки на мониторе:Perl oneliner: напечатать первые строки в файле
> perl -ne "print if $. < 10" in.csv
Я попытался это:
> perl -ne "print if $. < 10" in.csv >out.txt
Но это только создает файл out.txt без написания первых строк в ней. Что не так с этим кодом?
Спасибо за помощь
Windows 7/Strawberry Perl
Update1:
Если я посылаю результат печати на мониторе с помощью:
> perl -ne "print if $. <= 10" in.csv
программа не останавливается , то есть первые десять строк выводятся на монитор, но это не заканчивается:
>
Мне нужно остановить программу, используя Ctrl + c.
Использование простого csv-файла, такого как ikegami (всего несколько строк), работает onliner. Я предполагаю, что в csv-файле есть что-то.
Update 2:
Оригинальный Onliner:
> perl -ne "print if $. <= 10" in.csv >out.txt
работы. Я должен подождать несколько секунд. Csv-файл имеет размер 2 ГБ. Онлайнер:
> perl -pe "exit if $. > 10" in.csv >out.txt
дает результат немедленно. Вывод: первый onliner проходит через все строки, второй - после 10 строк.
Извините, что я беспокою вас с этой проблемой. Я выучил свой урок: используйте подходящий onliner или подождите несколько секунд.
Это вопрос MSWin cmd.exe, а не Perl. – choroba
Он работает для меня как есть на win2k8r2. Установлен ли выходной файл только для чтения после его первоначального создания? – stevieb
@stevieb. Нет. Это можно написать. Я попробовал пример икегами, и он работает. Очевидно, что это имеет какое-то отношение к исходному csv-файлу. – giordano