VOOZH about

URL: https://manpages.org/dgrep

⇱ man dgrep (1): Grep standard input for lines that match EXPRESSION.


dgrep(1) Grep standard input for lines that match EXPRESSION.

SYNOPSIS

dgrep [OPTION]... EXPRESSION

DESCRIPTION

Grep standard input for lines that match EXPRESSION.

EXPRESSION may be date/times prefixed with an operator `<', `<=', '=', '>=', which will match lines with date/times which are older, older-equal, equal, newer-equal, newer, or not equal respectively.

EXPRESSION may also be format specifiers infixed by above operators and suffixed by a value (e.g. `%a="Wed"') which matches lines whose %a representation (weekday name abbreviated) is "Wed".

EXPRESSION may be statements as described above concatenated through `&&' (for conjunction) or `||' (disjunction), both of which may be parenthesised as per usual to change precedence (`&&' goes over `||').

If multiple date/times occur on the same line and any one of them fulfills the criteria then the line is considered a match and will be output.

Note:
  Operations can be specified by options (--eq, --gt, ...) as well.
  This serves solely as a means of convenience, e.g. the dtest tool has a
  similar syntax.

Recognized OPTIONs:

-h, --help
Print help and exit
-V, --version
Print version and exit
-q, --quiet
Suppress message about date/time and duration parser errors.
-i, --input-format=STRING...
Input format, can be used multiple times. Each date/time will be passed to the input format parsers in the order they are given, if a date/time can be read successfully with a given input format specifier string, that value will be used.
-e, --backslash-escapes
Enable interpretation of backslash escapes in the output and input format specifier strings.
-o, --only-matching
Show only the part of a line matching DATE.
-v, --invert-match
Select non-matching lines.
--from-zone=ZONE
Consider date/times on stdin as coming from the zone ZONE, default: UTC.
-z, --zone=ZONE
Consider date/times in EXPRESSION as coming from the zone ZONE, default: UTC.
--eq
Lines match when date/times are equal to EXPRESSION.
--ne
Lines match when date/times are not the same as EXPRESSION.
--gt
Lines match when date/times are newer than EXPRESSION.
--lt
Lines match when date/times are older than EXPRESSION.
--ge
Lines match when date/times are newer than or equal EXPRESSION.
--le
Lines match when date/times are older than or equal EXPRESSION.
--nt
Lines match when date/times are newer than or equal EXPRESSION.
--ot
Lines match when date/times are older than or equal EXPRESSION.

FORMAT SPECS

Format specs in dateutils are similar to posix' strftime().

However, due to a broader range of supported calendars dateutils must employ different rules.

Date specs:

 %a The abbreviated weekday name
 %A The full weekday name
 %_a The weekday name shortened to a single character (MTWRFAS)
 %b The abbreviated month name
 %B The full month name
 %_b The month name shortened to a single character (FGHJKMNQUVXZ)
 %c The count of the weekday within the month (range 00 to 05)
 %C The count of the weekday within the year (range 00 to 53)
 %d The day of the month, 2 digits (range 00 to 31)
 %D The day of the year, 3 digits (range 000 to 366)
 %F Equivalent to %Y-%m-%d (ymd's canonical format)
 %j Equivalent to %D
 %m The month in the current calendar (range 00 to 19)
 %Q The quarter of the year (range Q1 to Q4)
 %q The number of the quarter (range 01 to 04)
 %s The number of seconds since the Epoch.
 %u The weekday as number (range 01 to 07, Sunday being 07)
 %U The week count, day of week is Sun (range 00 to 53)
 %V The ISO week count, day of week is Mon (range 01 to 53)
 %w The weekday as number (range 00 to 06, Sunday being 00)
 %W The week count, day of week is Mon (range 00 to 53)
 %y The year without a century (range 00 to 99)
 %Y The year including the century
 %Z The zone offset in hours and minutes (HH:MM) with
 a preceding sign (+ for offsets east of UTC, - for offsets
 west of UTC)
 %Od The day as roman numerals
 %Om The month as roman numerals
 %Oy The two digit year as roman numerals
 %OY The year including the century as roman numerals
 %rs In time systems whose Epoch is different from the unix Epoch, this
 selects the number of seconds since then.
 %rY In calendars with years that don't coincide with the Gregorian
 years, this selects the calendar's year.
 %dth The day of the month as an ordinal number, 1st, 2nd, 3rd, etc.
 %mth The month of the year as an ordinal number, 1st, 2nd, 3rd, etc.
 %db The business day of the month (since last month's ultimo)
 %dB Number of business days until this month's ultimo

Time specs:

 %H The hour of the day using a 24h clock, 2 digits (range 00 to 23)
 %I The hour of the day using a 12h clock, 2 digits (range 01 to 12)
 %M The minute (range 00 to 59)
 %N The nanoseconds (range 000000000 to 999999999)
 %p The string AM or PM, noon is PM and midnight is AM.
 %P Like %p but in lowercase
 %S The (range 00 to 60, 60 is for leap seconds)
 %T Equivalent to %H:%M:%S

General specs:

 %n A newline character
 %t A tab character
 %% A literal % character

Modifiers:

 %O Modifier to turn decimal numbers into Roman numerals
 %r Modifier to turn units into real units
 th Suffix, read and print ordinal numbers
 b Suffix, treat days as business days

By design dates before 1601-01-01 are not supported.

For conformity here is a list of calendar designators and their corresponding format string:

 ymd %Y-%m-%d
 ymcw %Y-%m-%c-%w
 ywd %rY-W%V-%u
 bizda %Y-%m-%db
 lilian n/a
 ldn n/a
 julian n/a
 jdn n/a

These designators can be used as output format string, moreover, @code{lilian}/@code{ldn} and @code{julian}/@code{jdn} can also be used as input format string.

EXAMPLES

 $ dgrep 2012-03-01 <<EOF
 2012-02-28
 2012-02-29
 2012-03-01
 2012-03-02
 EOF
 2012-03-01
 $
 $ dgrep '<2012-03-01' <<EOF
 2012-02-28
 2012-02-29
 2012-03-01
 2012-03-02
 EOF
 2012-02-28
 2012-02-29
 $
 $ dgrep =2012-03-01 <<EOF
 2012-02-28
 2012-02-29
 2012-03-01
 2012-03-02
 EOF
 2012-02-28
 2012-02-29
 2012-03-02
 $
 $ dgrep =2012-03-01 <<EOF
 Feb 2012-02-28
 Feb 2012-02-29 leap day
 Mar 2012-03-01
 Mar 2012-03-02
 EOF
 Mar 2012-03-01
 $
 $ dgrep -o <2012-03-01 <<EOF
 Feb 2012-02-28
 Feb 2012-02-29 leap day
 Mar 2012-03-01
 Mar 2012-03-02
 EOF
 2012-02-28
 2012-02-29
 $
 $ dgrep '>=12:00:00' <<EOF
 fileA 11:59:58
 fileB 11:59:59 leap ?
 fileNOON 12:00:00 new version
 fileC 12:03:12
 EOF
 fileNOON 12:00:00 new version
 fileC 12:03:12
 $
 $ dgrep -o '>=12:00:00' <<EOF
 fileA 11:59:58
 fileB 11:59:59 leap ?
 fileNOON 12:00:00 new version
 fileC 12:03:12
 EOF
 12:00:00
 12:03:12
 $
 $ dgrep 2012-03-01 <<EOF
 2012-02-28T10:00:00
 2012-02-29T10:00:00
 2012-03-01T10:00:00
 2012-03-02T10:00:00
 EOF
 2012-03-01T10:00:00
 $
 $ dgrep '<2012-03-01' <<EOF
 2012-02-28T10:00:00
 2012-02-29T10:00:00
 2012-03-01T10:00:00
 2012-03-02T10:00:00
 EOF
 2012-02-28T10:00:00
 2012-02-29T10:00:00
 $
 $ dgrep 2012-03-01T10:00:00 <<EOF
 2012-02-28T10:00:00
 2012-02-29T10:00:00
 2012-03-01T10:00:00
 2012-03-02T10:00:00
 EOF
 2012-03-01T10:00:00
 $
 $ dgrep '<2012-03-01T14:00:00' <<EOF
 2012-02-28T10:00:00
 2012-02-29T10:00:00
 2012-03-01T10:00:00
 2012-03-02T10:00:00
 EOF
 2012-02-28T10:00:00
 2012-02-29T10:00:00
 2012-03-01T10:00:00
 $

AUTHOR

Written by Sebastian Freundt <[email protected]>

REPORTING BUGS

Report bugs to: https://github.com/hroptatyr/dateutils/issues