Сценарий Bash для преобразования 2-го столбца в файл csv из Время Unix до читаемой даты / времени

Я вижу две (может быть, три) проблемы с вашей игрой. Параметр Блокне существует, это блоксо строчной буквой b. Тогда блок имеет неправильный отступ. Вам нужно сделать отступ блока за пределы отступа параметра блока. Также это не удастся, если файл /tmp/fire.txtне существует.

Вот плейбук в рабочем виде:

---
 - hosts: 1.1.0.1
   tasks:
   - name: putting /tmp/fire.txt File on all machine.
     blockinfile:
      dest: /tmp/fire.txt
      block: | 


       *filter
          :INPUT   DROP   [0:0]
          :FORWARD DROP   [0:0]
          :OUTPUT  ACCEPT [0:0]
          -A INPUT -i lo -j ACCEPT
          -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
          -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
          -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
          -A INPUT -p udp --sport 53 -j ACCEPT
          -A INPUT -p tcp --dport 80   -j ACCEPT
          -A INPUT -p tcp --dport 443  -j ACCEPT
          -A INPUT -p tcp --dport 23   -j ACCEPT
          -A INPUT -p tcp --dport 22   -j ACCEPT
          -A INPUT -p tcp --dport 3260   -j ACCEPT --comment "Enable iscsi port"
          -A INPUT -p tcp --dport 119   -j ACCEPT --comment "Enable nfs TCP  port"
          -A INPUT -p tcp --dport 2049   -j ACCEPT --comment "Enable nfs UDP port"
          COMMIT
1
11.08.2017, 19:47
2 ответа

Я бы настоятельно рекомендовал формат времени ГГГГ -мм -дд ЧЧ :ММ :СС --, этот формат однозначен и сортируется в лексическом и хронологическом порядке.

Для этого можно использовать perl:

perl -MPOSIX=strftime -F, -ane '
    $F[1] = strftime("%F %T", localtime $F[1]) if $. > 1; 
    print join ",", @F
' file
4
27.01.2020, 23:16

Подход awk:

awk -F, 'NR>1{printf"%s,",$1;
             system("printf \"$(date -d @"$2")\"");printf",%s,%s\n",$3,$4}
' infile.txt
HOST,DATE_TIME_CREATED,USER_ID,EVENT_CLASS
xxxx,Wed Aug  9 09:43:00 EDT 2017,xxxx,xxxx
xxxx,Wed Aug  9 08:05:47 EDT 2017,xxxx,xxxx
1
27.01.2020, 23:16

Теги

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