Добавьте недели в столбец дат, чтобы создать новый столбец дат

Правило INPUT для каждой зоны -регулирует трафик, поступающий из-за пределов маршрутизатора и попадающий на IP-адрес, назначенный интерфейсу в данной зоне.

Единственный способ, которым трафик из lanможет попасть в wan, — это через маршрутизатор, и в этом смысле он не поступает «извне» (с точки зрения wanзона ).

Таким образом, чтобы ответить на ваш вопрос -да, INPUTвместо wanотносится только к пакетам из Интернета.


Хотя это не является частью вашего вопроса, это может помочь другим. :Правило для -зоны FORWARDуправляет трафиком между интерфейсами в одной и той же зоне .Это отличается от «переадресации», которая управляет трафиком между различными зонами .enter image description here

2
19.11.2019, 18:23
3 ответа

Вы можете использовать perl с модулем Time::Piece:

perl -MTime::Piece -MTime::Seconds -lpe '
  $dt = Time::Piece->strptime($_,"%d%m%Y") + 8 * ONE_WEEK; 
  $_.= $dt->strftime(" %d%m%Y")
' file
10112017 05012018
23012012 19032012
01022008 28032008

или с GNU awk(gawk)и GNUdate

gawk -v FIELDWIDTHS='2 2 4' '{
    cmd = sprintf("date +%%d%%m%%Y -d \"%s/%s/%s + 8 weeks\"", $2, $1, $3); 
    cmd |& getline dt; 
    close(cmd)
  } 
  {
    print $0,dt
  }
' file
10112017 05012018
23012012 19032012
01022008 28032008

или (мой новый фаворит для такого рода вещей ), Миллер

$ mlr --nidx put -S '$2 = strftime(strptime($1,"%d%m%Y") + 4838400,"%d%m%Y")' file
10112017 05012018
23012012 19032012
01022008 28032008

где 4838400— 8 недель в секундах (3600 x 24 x 7 x 8 ).

2
27.01.2020, 22:07
]# date -d '2020-2-1 +8 week' +%Y-%m-%d
2020-03-28

]# date -d '2019-2-1 +8 week' +%Y-%m-%d
2019-03-29

]# date -d '2019-7-1 +8 week' +%Y-%m-%d
2019-08-26
В

info dateесть несколько дополнительных примеров. Я использовал запись ГГГГ -ММ -ДД, она не работала с вашей формой ДДММГГГГ.

Это с GNU date. Пример показывает, что длины месяцев и високосные годы работают.

С помощью dateу вас есть базовый инструмент для работы с календарем. Может быть, есть лучший способ интегрировать это в ваш скрипт -, поскольку вы видите, что ввод «DDMMYYYY» требует (? )лечение.

Для форматирования вывода +%Y-%m-%dможно изменить на +%d%m%Y.

0
27.01.2020, 22:07

Аннотированный сценарий bash ниже. Запустите как:./script.sh < inputfile > outputfile.

#!/bin/bash

# date1 is orignal date string in 1st column
# date2 is 8 weeks later than date1

while read date1 ; do

    # Skip emtpy lines
    #
    [ "$date1" ] || continue

    # We want to use 'date' command to calculate 8 weeks later.
    # However the 'date' command does not accept 'ddmmyyyy', but it
    # does accept 'yyyy-mm-dd'. So we need to convert first.
    #
    dd=${date1%??????}
    mm=${date1#??} ; mm=${mm%????}
    yyyy=${date1#????}

    # The 'date' command does have its own option to specify output
    # format of the date. It also just lets specify the input date
    # like this: "1983-04-18 + 8 weeks" to have it calculate what we
    # need here.
    #
    date2=$(date -d "${yyyy}-${mm}-${dd} + 8 weeks" +'%d%m%Y')

    # Now just output both dates on one line
    #
    echo $date1 $date2

done
0
27.01.2020, 22:07

Теги

Похожие вопросы