Решение re
вообще не использует индекс. Вы должны использовать команды, такие как:
db.collectionname.find({'files':{'$regex':'^File'}})
(я не могу комментировать ниже их ответов, поэтому я отвечаю здесь)
Вам будет нужен хвост. Некоторые примеры:
$ tail great-big-file.log
< Last 10 lines of great-big-file.log >
, Если действительно необходимо ПРОПУСТИТЬ конкретное количество "первых" строк, используйте
$ tail -n +<N+1> <filename>
< filename, excluding first N lines. >
таким образом, если Вы хотите пропустить строки N, Вы начинаете печатать строку N+1. Пример:
$ tail -n +11 /tmp/myfile
< /tmp/myfile, starting at line 11, or skipping the first 10 lines. >
, Если Вы хотите просто видеть последнее столько строк, опустите "+":
$ tail -n <N> <filename>
< last N lines of file. >
Можно сделать это использование команд головы и хвоста:
head -n <num> | tail -n <lines to print>
, где цифра 1e6 + количество строк, Вы хотите распечатать.
Если Вы имеете хвост GNU в наличии в своей системе, можно сделать следующее:
tail -n +1000001 huge-file.log
Это +
символ, который делает то, что Вы хотите. Заключить в кавычки из страницы справочника:
, Если первый символ K (число байтов или строк) '+', печать, начинающаяся с объекта Kth от запуска каждого файла.
Таким образом, как отмечено в комментарии, помещая +1000001 начинает печатать с первым объектом после первых 1 000 000 строк.
Этот сценарий оболочки хорошо работает для меня:
#!/bin/bash
awk -v initial_line=$1 -v end_line=$2 '{
if (NR >= initial_line && NR <= end_line)
print $0
}' $3
Используемый с этим файлом примера (file.txt):
one
two
three
four
five
six
Команда (это извлечет от второго до четвертой строки в файле):
edu@debian5:~$./script.sh 2 4 file.txt
Вывод этой команды:
two
three
four
Конечно, можно улучшить его, например, путем тестирования, что все значения аргументов являются ожидаемым :-)
Мне нужно было сделать то же самое, и я нашел эту ветку.
Я попробовал "tail -n +, но он просто напечатал все.
Строки more + хорошо работали в приглашении". , но оказалось, что он ведет себя совершенно иначе при запуске в режиме без головы (cronjob).
В конце концов, я написал это сам:
skip=5
FILE="/tmp/filetoprint"
tail -n$((`cat "${FILE}" | wc -l` - skip)) "${FILE}"