Если ваш файл не содержит никаких нулевых символов, используйте GNU sed
. Это обнаружит появление третьего диапазона шаблонов. Однако, вы можете легко изменить это, чтобы получить любое событие, которое вы хотели бы.
sed -n '/^category/ { x; s/^/\x0/; /^\x0\{3\}$/ { x; :a; p; /done/q; n; ba }; x }' file.txt
Результаты:
category
3
r
d
done
Объяснение:
Отключить по умолчанию печать с помощью переключателя -n
. Сопоставьте слово «категория» в начале строки. Поменяйте пространство шаблонов пространством удержания и добавьте нулевой символ в начало шаблона. В примере, если шаблон затем содержит два ведущих нулевых символа, вытащите шаблон из пространства пробелов. Теперь создайте цикл и распечатайте содержимое пространства шаблонов до тех пор, пока не будет сопоставлен последний шаблон. Когда этот последний шаблон найден, sed
закроется. Если он не найден, sed
продолжит читать следующую строку ввода и продолжить в своем цикле.
Вы не должны форсировать сравнение строк, когда то, с чем вы работаете, - данные Date / Time - как только вы принудительно сравниваете строки, вам вдруг приходится иметь дело с , как Строки форматируются.
Вместо этого есть что-то вроде:
var endDate = targetDate.AddDays(1);
toRet.Notification = Repositories
.portalDb.portal_notifications.OrderByDescending(p => p.id)
.FirstOrDefault(p => p.date >= targetDate && p.date < endDate);
(Предполагая, что targetDate
- это какая-либо переменная DateTime
, которая была использована для создания shortDateString
в ваш код и уже является DateTime
без значения времени)
Попробуйте это,
Вы также можете использовать код ниже.
Activity = String.Format("{0} {1}", String.Format("{0:dd-MMM-yyyy}", s.SLIDESHEETDATE), String.Format("{0:HH:mm}", s.ENDDATETIME))
ToShortDateString()
метод, обычно используемый для работы только с датой и игнорированием временных меток.
Вы получите именно сегодня результат, используя следующий запрос.
Repositories.portalDb.portal_notifications.OrderByDescending(p => p.id)
.FirstOrDefault(p => p.date.Date == DateTime.Now.Date);
Используя свойство Date
структуры DateTime
, вы можете просто получить запись только этой даты.
Примечание: Linq to Objects. Работает только в том случае, если вы можете (или иметь опцию) обходить метод ToShortDateString()
p.date.Date
выдаст исключение. Вы не можете сделать это в запросе LINQ to Entities.
– IronMan84
16 December 2014 в 15:31
date
здесь свойство DateTime
. вы можете изменить его с помощью CreatedDate
. Сначала посмотрите на вопрос, пожалуйста ...
– rana
17 December 2014 в 15:01
date
является свойством DateTime
. Я говорю, что вы не можете использовать date.Date
в LINQ для Entities, так как он не знает, как перевести это в SQL.
– IronMan84
17 December 2014 в 15:10
p.CreatedDate.Date
. надеюсь, что вы его получите :-)
– rana
17 December 2014 в 15:11
Linq to Entities не может преобразовать метод ToSortDateString
в код SQL. Вы не можете вызвать его на стороне сервера. Либо переместите фильтрацию на клиентскую сторону (которая будет передавать все данные с сервера на клиент), либо подумайте о том, чтобы использовать серверные функции , чтобы принять дату даты (вы должны передать объект DateTime
вместо shortDateString
):
EntityFunctions.TruncateTime(p.date) == dateWithoutTime
shortDateString
вы должны передать объект DateTime
– Sergey Berezovskiy
15 July 2013 в 15:44
DbFunctions.TruncateTime()
– Bpainter
9 December 2015 в 21:23