Как записать содержимое буфера в стандартный вывод?

Используйте этот код, чтобы найти запись между двумя датами, используя $gte и $lt:

db.CollectionName.find({"whenCreated": {
    '$gte': ISODate("2018-03-06T13:10:40.294Z"),
    '$lt': ISODate("2018-05-06T13:10:40.294Z")
}});
30
задан kenorb 14 February 2015 в 12:56
поделиться

3 ответа

Можно использовать экс-режим (p) rint команда для печати любого набора строк, которые Вы хотите к stdout.

печать все строки:

:1,$p

Также печать все строки (% является сокращением от диапазона 1, $)

:%p

строки печати 4-10:

:4,10p

следующая строка печати, содержащая НЕЧТО

/FOO/ p

печать все строки, содержащие НЕЧТО

g/FOO/ p
0
ответ дан 27 November 2019 в 22:10
поделиться

Поскольку вы используете Linux / Unix, вам также может быть интересно попробовать moreutils . Он предоставляет команду под названием vipe , которая читает из stdin , позволяет редактировать текст в $ EDITOR , а затем печатает измененный текст в стандартном выводе . .

Убедитесь, что в вашем редакторе установлен Vim:

export EDITOR=vim

А затем вы можете попробовать следующие примеры:

cat /etc/fstab | vipe
cut -d' ' -f2 /etc/mtab | vipe | less
20
ответ дан 27 November 2019 в 22:10
поделиться

Чтение из stdin:

echo "hey" | vim  -

Когда вы :w, вам все равно придется дать ему имя файла.

Программы, использующие vim в качестве EDITOR, например crontab -e, передают ему имя файла, чтобы пользователь мог просто :x и не беспокоиться об именах файлов.

EDIT

Вы также можете сделать что-то вроде этого:

mkfifo /tmp/some_pipe
echo "hey" > /tmp/some_pipe ; cat /tmp/some_pipe

И из другого процесса (или терминала)

vim /tmp/some_pipe

Имейте в виду, что запись в трубу будет блокироваться, пока что-то не прочитает из нее, а чтение будет блокироваться, пока что-то не запишет в нее, поэтому безопаснее использовать обычные файлы.

7
ответ дан 27 November 2019 в 22:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: