[英]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.