ค้นหาสตริงระหว่างการประทับเวลาสองครั้งโดยเริ่มจากด้านล่างของไฟล์


0

ฉันพยายามค้นหาสตริงCannot proceed: the cube has no dataในไฟล์ test.txt ขนาดใหญ่เฉพาะระหว่างการประทับเวลาเมื่อวานนี้ 22:30 น. ถึงวันนี้ 00:30 น.

สคริปต์:

tac test.txt | awk -v today=$(date "+%d") -v yesterday=$(date "+%d" -d yesterday) '/Cannot proceed: the cube has no data/ {f=$0; next} f{if (($3==yesterday && $4>"22:30:00") || ($4==today && $4<="00:30:00")) {print; print f} f=""}'

test.txt:

[Thu Jun  8 07:56:17 2014]Local/data///47480280486528/Info(1019022)
Writing Database Mapping For [data]

[Thu Jun  8 12:56:38 2014]Local/data///47480280486528/Info(1250008)
Setting Outline Paging Cachesize To [8192KB]

[Thu Jun  8 22:56:20 2014]Local/data///47480280486528/Info(1013202)
Cannot proceed: the cube has no data 

[Thu Jun  8 23:26:18 2014]Local/data///47480280486528/Info(1013205)
Received Command [Load Database]

[Thu Jun  9 00:16:23 2014]Local/data///47480280486528/Info(1019018)
Writing Parameters For Database 

[Thu Jun  9 00:21:20 2014]Local/data///47480280486528/Info(1013205)
Writing Parameters For Database 

[Thu Jun  9 00:29:00 2014]Local/data///47480280486528/Info(1013205)
Cannot proceed: the cube has no data

[Thu Jun  9 01:25:21 2014]Local/data///47480280486528/Info(1019018)
Cannot proceed: the cube has no data 

เอาท์พุท:

[Thu Jun  8 22:56:20 2014]Local/data///47480280486528/Info(1013202)
Cannot proceed: the cube has no data

ทำไมไม่ทุกสายที่ตรงกับ requiremnts กำลังออกมา? สิ่งที่ฉันหายไปที่นี่

คำตอบ:


1
awk -v RS="" \
    -v yesterday="$(date "+%e" -d yesterday)" \
    -v start_time="22:30:00" \
    -v today="$(date "+%e")" \
    -v end_time="00:30:00" '
        $3 == yesterday && $4 > start_time {p=1}
        p && $3 == today && $4 > end_time {exit}
        p && /Cannot proceed: the cube has no data/
' test.txt 
[Thu Jun  8 22:56:20 2014]Local/data///47480280486528/Info(1013202)
Cannot proceed: the cube has no data 
[Thu Jun  9 00:29:00 2014]Local/data///47480280486528/Info(1013205)
Cannot proceed: the cube has no data

ข้อผิดพลาดของคุณ: $4==todayควรใช้$3
เกล็นแจ็คแมน
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.