簡體   English   中英

兩個字符串變量的AWK相等比較失敗

[英]AWK equality comparison of two string variables fails

今天的日期是:

DATE=$(date +%Y-%m-%d)
echo $DATE
2018-09-26

我有一個名為z.awk的awk腳本:

{
    orig = $0
    sched = ""
    for (i=NF; i>0; i--)
    {
        if ( sub(/^t:/,"",$i) )
        {
            sched = $i
            #print sched
            break
        }
        else if ( sub(/^due:/,"",$i) )
        {
            sched = $i
        }
    }
    $0 = orig
}
sched == date

數據文件(./t):

33 (A) How to build a time machine t:2018-09-27 due:2018-09-26
02 (A) Search the IT Jobs due:2018-09-20
32 (B) AWS Cost Explorer +customerX due:2018-09-26
05 (B) Barclays Gaget Protection t:2018-09-24
37 (B) Barclay’s App Reregister t:2018-09-24 due:2018-09-22
34 (B) Book winter sun flights t:2018-09-25 due:2018-09-25
03 (B) Buy Raspberry Pi 3 t:2018-09-22
04 (B) Buy Vaporizer +health @web t:2018-09-27 due:2018-09-22
38 (B) Dr Apt - Change dates! t:2018-09-29

命令:

cat ./t | awk -v date="$(date +%Y-%m-%d)" -f z.awk

OUTPUT:

32 (B) AWS Cost Explorer +customerX due:2018-09-26

命令:

grep -e "t:$DATE"  -e "due:$DATE" ./t

OUTPUT:

33 (A) How to build a time machine t:2018-09-27 due:2018-09-26
32 (B) AWS Cost Explorer +customerX due:2018-09-26

GREP進行了邏輯或比較,並給了我額外的輸出行(今天的到期日:日期),這是我不感興趣的,因為我已經將該任務推遲到了明天-貪睡按鈕。

使用AWK腳本,我的真實未消毒任務列表中的數據在等於比較(“ sched == date”)上沒有輸出,而在所提供的消毒任務列表數據上,它可以正常工作。 大於或等於“預定>日期”的情況總是會給我今天的日期。

原始問題:

這是比較日期字符串變量的正確方法還是有更好的方法?

更多信息

好的,我發現了問題:我的示例數據不能完全反映我正在運行的todo.txt-cli腳本實際執行的操作。

我的命令實際上是:

todo.sh ls | awk -v date="$(date +%Y-%m-%d)" -f z.awk. 

吉娜·特拉帕尼Gina Trapani )驚人的todo.txt格式的待辦事項列表管理器( todo.sh )在每行的開頭和結尾輸出ANSI COLOR字符,如下所示:

^[[0;32m40 (B) A/C Fixed? +fittings @web @cal^[[0m
^[[0;32m4343 (B) Pay Rent +finance @web t:2018-09-27 due:2018-09-26^[[0m
^[[0;32m42 (B) Make Calls +workship @call t:2018-09-27^[[0m
^[[0;32m41 (B) Flying Lessons - Book +sports @apts due:2018-09-27^[[0m

所以我猜awk腳本在進行比較操作時需要忽略行字符“ ^ [[0m””嗎?

更改此:

}
$0 = orig

對此:

}
sched = substr(sched,1,10)
$0 = orig

從Sched中修剪所有尾隨的字符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM