簡體   English   中英

AWK時間戳大於

[英]Awk timestamp greater than

我有一個文件,我試圖只打印時間戳大於或等於22:01的行,但是我似乎無法使其正常工作。 如下所示,它仍然還會打印8:05時間戳? 可能是男生失誤,但我正在努力使其正常工作,因此,朝正確方向發展的任何指針都將不勝感激。

 cat /tmp/m1.out | awk '$1>="22:01"' 

    22:05:42:710
    23:05:42:710
    8:05:42:710
    8:05:42:710
    8:05:42:710
    8:05:42:710
    8:05:42:710

謝謝,

馬特

該問題已在注釋中正確識別。 您正在與字符串進行比較,這將觸發字符串比較。 在字符串比較中,“ 8:05:42:710”大於“ 22:01”,因為第一個字符“ 8”大於“ 2”。

一種選擇是將時間分成多個單獨的部分,並使用數字比較:

awk -F: '$1 >= 22 && $2 >= 1' /tmp/m1.out

如果您的邏輯更加復雜,例如您的文件包含更多字段,並且您不想更改字段分隔符,則可以使用split

awk '{ split($1, pieces, /:/) } pieces[1] >= 22 && pieces[2] >= 1' file

用前導零填充字段會有些棘手,在您的示例中沒有必要,因為小時中只有一位數字的時間永遠不會大於22。

如果可能的話,最好的辦法是使用與字符串比較兼容的時間戳,盡管這將需要控制正在生成正在使用的文件的任何內容。

暫無
暫無

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

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