DATEGREP(1) User Commands DATEGREP(1)

dategrep - جستجوی سطرهای منطبق با عبارت در ورودی استاندارد

dategrep [گزینه]... EXPRESSION

جستجو در ورودی استاندارد برای سطرهایی که با EXPRESSION مطابقت دارند.

مقدار EXPRESSION می‌تواند شامل تاریخ/زمان‌هایی باشد که با یکی از عملگرهای `<'، `<='، `='، `>='، `>'، `!='، `<>' آغاز می‌شوند (در صورت حذف، مقدار پیش‌فرض `=' خواهد بود)، که به ترتیب با سطرهایی تطابق می‌یابد که تاریخ/زمان آن‌ها قدیمی‌تر، قدیمی‌تر یا مساوی، برابر، جدیدتر یا مساوی، جدیدتر، یا نابرابر باشند.

همچنین EXPRESSION می‌تواند شامل مشخص‌کننده‌های قالبی باشد که عملگرهای بالا بین آن‌ها و یک مقدار پسوند قرار گرفته‌اند (مانند `%a="Wed"`) که با سطرهایی تطابق پیدا می‌کند که نمایش %a آن‌ها (نام اختصاری روز هفته) برابر با "Wed" باشد.

همچنین EXPRESSION می‌تواند عبارت‌هایی مشابه موارد توصیف‌شده در بالا باشد که با `&&' (برای عطف منطقی) یا `||' (برای فصل منطقی) ادغام شده‌اند؛ طبق روال معمول می‌توان برای تغییر تقدم عملگرها آن‌ها را درون پرانتز قرار داد (تقدم `&&' بالاتر از `||' است).

اگر چندین تاریخ/زمان در یک سطر وجود داشته باشند و هر یک از آن‌ها معیارها را برآورده کند، آن سطر یک تطابق در نظر گرفته شده و در خروجی چاپ خواهد شد.

نکته:
عملیات‌ها را می‌توان از طریق گزینه‌ها (--eq، --gt و...) نیز مشخص کرد.
این قابلیت صرفاً برای سهولت استفاده است، زیرا ابزار datetest ساختار نحوی مشابهی دارد.

گزینه‌های (OPTIONs) شناخته‌شده:

چاپ راهنما و خروج
چاپ نسخه و خروج
عدم نمایش پیام‌های مربوط به خطاهای تجزیه‌کننده تاریخ/زمان و مدت‌زمان.
قالب ورودی، می‌تواند چندین بار استفاده شود. هر تاریخ/زمان به ترتیب دریافت به تجزیه‌کننده‌های قالب ورودی ارسال می‌شود؛ اگر یک تاریخ/زمان بتواند با یک رشته مشخص‌کننده قالب ورودی معین با موفقیت خوانده شود، همان مقدار استفاده خواهد شد.
برای ورودی‌های ناکامل، از DT به‌عنوان مقدار پشتیبان برای پر کردن فیلدهای مفقود استفاده می‌شود. همچنین برای مشخص‌کننده‌های قالب مبهم، جهت تعیین موقعیت بازه آن‌ها روی محور زمان مطلق به کار می‌رود. باید یک تاریخ/زمان در قالب ISO8601 باشد. در صورت حذف، تاریخ/زمان فعلی پیش‌فرض خواهد بود.
فعال کردن تفسیر کاراکترهای اسکیپ بک‌اسلش در رشته‌های مشخص‌کننده قالب خروجی و ورودی.
نمایش تنها بخشی از سطر که با DATE تطابق دارد.
انتخاب سطرهای غیرمنطبق (معکوس کردن تطابق).
تفسیر تاریخ‌های موجود در ورودی استاندارد (stdin) یا خط فرمان به‌عنوان تاریخ‌های برگرفته از زبان و بوم LOCALE؛ این گزینه تنها بر نام ماه‌ها و روزهای هفته تأثیر دارد، چرا که قالب‌های ورودی باید صریحاً مشخص شوند.
در نظر گرفتن تاریخ/زمان‌های ورودی استاندارد (stdin) به‌عنوان مقادیر متعلق به منطقه زمانی ZONE؛ پیش‌فرض: UTC.
در نظر گرفتن تاریخ/زمان‌های موجود در EXPRESSION به‌عنوان مقادیر متعلق به منطقه زمانی ZONE؛ پیش‌فرض: UTC.
سطرها زمانی تطابق دارند که تاریخ/زمان‌ها برابر با EXPRESSION باشند.
سطرها زمانی تطابق دارند که تاریخ/زمان‌ها با EXPRESSION یکسان نباشند.
سطرها زمانی تطابق دارند که تاریخ/زمان‌ها جدیدتر از EXPRESSION باشند.
سطرها زمانی تطابق دارند که تاریخ/زمان‌ها قدیمی‌تر از EXPRESSION باشند.
سطرها زمانی تطابق دارند که تاریخ/زمان‌ها جدیدتر از یا مساوی با EXPRESSION باشند.
سطرها زمانی تطابق دارند که تاریخ/زمان‌ها قدیمی‌تر از یا مساوی با EXPRESSION باشند.
سطرها زمانی تطابق دارند که تاریخ/زمان‌ها جدیدتر از یا مساوی با EXPRESSION باشند.
سطرها زمانی تطابق دارند که تاریخ/زمان‌ها قدیمی‌تر از یا مساوی با EXPRESSION باشند.

مشخصات قالب در dateutils مشابه ()strftime در استانداردهای posix است.

با این حال، به دلیل پشتیبانی از گستره وسیع‌تری از گاه‌شماری‌ها، dateutils باید قواعد متفاوتی را به کار گیرد.

مشخصات تاریخ:

%a  نام اختصاری روز هفته
%A  نام کامل روز هفته
%_a نام روز هفته کوتاه شده به یک حرف تک (MTWRFAS)
%b  نام اختصاری ماه
%B  نام کامل ماه
%_b نام ماه کوتاه شده به یک حرف تک (FGHJKMNQUVXZ)
%c  شمارش روز هفته در ماه (بازه 00 تا 05)
%C  شمارش روز هفته در سال (بازه 00 تا 53)
%d  روز ماه، ۲ رقم (بازه 00 تا 31)
%D  روز سال، ۳ رقم (بازه 000 تا 366)
%F  معادل با %Y-%m-%d (قالب استاندارد ymd)
%g  سال تقویم هفتگی ISO بدون سده (بازه 00 تا 99)
%G  سال تقویم هفتگی ISO شامل سده
%j  معادل با %D
%m  ماه در گاه‌شماری فعلی (بازه 00 تا 12)
%Q  فصل سال (بازه Q1 تا Q4)
%q  شماره فصل (بازه 01 تا 04)
%s  تعداد ثانیه‌ها از مبدأ زمان (Epoch)
%u  روز هفته به عدد (بازه 01 تا 07، یکشنبه 07 است)
%U  شمارش هفته، روز هفته با یکشنبه شروع می‌شود (بازه 00 تا 53)
%V  شمارش هفته ISO، روز هفته با دوشنبه شروع می‌شود (بازه 01 تا 53)
%w  روز هفته به عدد (بازه 00 تا 06، یکشنبه 00 است)
%W  شمارش هفته، روز هفته با دوشنبه شروع می‌شود (بازه 00 تا 53)
%y  سال بدون سده (بازه 00 تا 99)
%Y  سال شامل سده
%_y سال کوتاه شده به یک رقم
%Z  انحراف منطقه زمانی به ساعت و دقیقه (HH:MM) با علامت
    پیشوند (+ برای شرق UTC، - برای غرب UTC)
%Od روز به اعداد رومی
%Om ماه به اعداد رومی
%Oy سال دورقمی به اعداد رومی
%OY سال شامل سده به اعداد رومی
%rs در سامانه‌های زمانی با مبدأ متفاوت از Epoch یونیکس،
    تعداد ثانیه‌ها را از آن مبدأ انتخاب می‌کند.
%rY در گاه‌شماری‌هایی که سال‌های آن‌ها با تقویم گریگوری همخوانی
    ندارد، سال تقویم مربوطه را انتخاب می‌کند.
%dth  روز ماه به‌صورت عدد ترتیبی (1st، 2nd، 3rd و غیره)
%mth  ماه سال به‌صورت عدد ترتیبی
%db روز کاری ماه (از پایان ماه قبل)
%dB تعداد روزهای کاری تا پایان این ماه

مشخصات زمان:

%H  ساعت در شبانه‌روز با ساعت ۲۴ ساعته، ۲ رقم (بازه 00 تا 23)
%I  ساعت در شبانه‌روز با ساعت ۱۲ ساعته، ۲ رقم (بازه 01 تا 12)
%M  دقیقه (بازه 00 تا 59)
%N  نانوثانیه (بازه 000000000 تا 999999999)
%p  رشته AM یا PM؛ ظهر PM و نیمه‌شب AM است.
%P  مشابه %p اما با حروف کوچک
%S  ثانیه (بازه 00 تا 60، 60 برای ثانیه‌های کبیسه است)
%T  معادل با %H:%M:%S

مشخصات عمومی:

%n  یک نویسه خط جدید
%t  یک نویسه تب
%%  نویسه واقعی %

اصلاح‌کننده‌ها (Modifiers):

%O  اصلاح‌کننده برای تبدیل اعداد ده‌دهی به اعداد رومی
%r  اصلاح‌کننده برای تبدیل واحدها به واحدهای واقعی
%0  اصلاح‌کننده برای فعال کردن پیشوندهای صفر
%SPC  اصلاح‌کننده برای فعال کردن پیشوندهای فاصله
%-  اصلاح‌کننده برای غیرفعال کردن کامل پیشوندها
th  پسوند، خواندن و چاپ اعداد ترتیبی
b   پسوند، در نظر گرفتن روزها به‌عنوان روزهای کاری

طبق طراحی، تاریخ‌های قبل از 1601-01-01 پشتیبانی نمی‌شوند.

برای هماهنگی بیشتر، در اینجا فهرستی از شناسه‌های گاه‌شماری و رشته‌های قالب متناظر با آن‌ها آورده شده است:

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
matlab     n/a
mdn        n/a

این شناسه‌ها می‌توانند به‌عنوان رشته قالب خروجی استفاده شوند؛ علاوه بر این، @code{lilian}/@code{ldn} و @code{julian}/@code{jdn} نیز می‌توانند به‌عنوان رشته قالب ورودی به کار روند.

$ dategrep 2012-03-01 <<EOF
2012-02-28
2012-02-29
2012-03-01
2012-03-02
EOF
2012-03-01
$
$ dategrep '<2012-03-01' <<EOF
2012-02-28
2012-02-29
2012-03-01
2012-03-02
EOF
2012-02-28
2012-02-29
$
$ dategrep \!=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
$
$ dategrep =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
$
$ dategrep -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
$
$ dategrep '>=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
$
$ dategrep -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
$
$ dategrep 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
$
$ dategrep '<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
$
$ dategrep 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
$
$ dategrep '<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
$

نوشته شده توسط Sebastian Freundt <freundt@fresse.org>

گزارش باگ‌ها به: https://github.com/hroptatyr/dateutils/issues

مستندات کامل برای dategrep به‌صورت یک راهنمای Texinfo نگهداری می‌شود. اگر برنامه‌های info و dategrep به‌درستی روی سیستم شما نصب شده باشند، دستور

info (dateutils)dategrep

باید دسترسی شما به راهنمای کامل را فراهم کند.

May 2024 dateutils 0.4.11