linux проблема с удалением строк, но не так просто - PullRequest
0 голосов
/ 02 марта 2020

У меня проблемы с удалением некоторых определенных c строк из файла, но это не так просто. Проблема требует поиска, а затем сохранения строк с указанными c датой и часом, например, 2008-06-08 и 12:40:53.90 AM, до тех пор, пока пользователь не желает получить ввод данных переменной чтения $dayy. Реальная проблема заключается в том, что мне нужны строки, которые больше после 12:40:53 до тех пор, пока, если $dayy, например, 2008-06-12, мне нужны строки, которые существуют до указанного c времени 12:40:53.90, ровно через 4 дня , Я использовал приведенный ниже код bash и с помощью последней команды awk я хотел удалить строки этого дня ($dayy), а их время после 12:40:53.90, но он удаляет все строки этой даты. если вы могли бы помочь, я буду очень признателен.

например, если начальный день 2008-06-08 (spec_date) и время 12:40:53.90 (timee), тогда я хочу, чтобы все строки этого дня время до тех же самых раз в два дня 2008-06-10 (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

пример моих данных

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

1 Ответ

0 голосов
/ 02 марта 2020

Есть 3 случая, которые необходимо сопоставить:

  1. Первый день: день == spec_date, время совпадения> = время
  2. Последний день: день == день, время совпадения <= timee </li>
  3. Между: днем ​​между spec_date и dayy, сопоставьте все

Поэтому напишите каждое условие и объедините их с ||.

awk -v dayy=$dayy -v spec_date=$spec_date -v timee=$timee '
    ($1 == spec_date && $2 >= timee) || 
    ($1 == dayy && $2 <= timee) || 
    ($1 > spec_date && $1 < dayy)' ex1.dat
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...