Linux删除行的麻烦,但不是那么简单

问题描述 投票:0回答:1

im麻烦您从文件中删除一些特定的行,但这并不是那么简单。该问题要求搜索,然后从特定日期和时间(例如2008-06-0812:40:53.90 AM)直到用户希望的日期(即读取变量输入$dayy)保存行。真正的问题是,我希望12:40:53之后的行数更大,直到$dayy例如2008-06-12,我需要在特定时间12:40:53.90之前,恰好在4天之后存在的行。我使用了下面的bash代码,并使用了最后一个awk命令,希望删除当天($dayy)中的行,并且它们的时间在12:40:53.90之后,但是它将删除该日期中的所有行。如果可以的话,我将非常感谢。

例如,如果第一天是2008-06-08spec_date),时间是12:40:53.90timee),那么我希望从那天开始直到第二天相同时间2008-06-10([ C0])

dayy

我的数据示例

read dayy ;  read spec_date ; read timee ;

awk -v dayy $dayy -v spec_date=$spec_date -v timee=$timee '{ if($1 >=spec_date && $2>=timee  && $1 <= dayy) print $0}' ex1.dat > ex2.dat

awk -v dayy=$dayy '! ( $1==dayy  &&   $2 ="[12-23]:[0-59]:[0-59].[0-50]")' ex2.dat
linux awk time
1个回答
0
投票

您需要匹配3种情况:

  1. [第一天:日期==指定日期,比赛时间> =时间
  2. 过去一天:day ==白天,比赛时间<= timee
  3. 介于:介于spec_date和dayy之间的日期,匹配所有内容

因此写下每个条件,并将其与2008-06-08 12:40:53.90 2008-06-08 12:43:39.80 ....................... 2008-06-11 **12:39:34.22** 2008-06-11 13:21:23:43 组合。

||
© www.soinside.com 2019 - 2024. All rights reserved.