У меня есть файл журнала, в котором записи данных выглядят следующим образом. Каждая запись начинается со времени:
time: 20170509123420
dn: uid=abc,ou=People,dc=test,dc=example,dc=com
changetype: modify
replace: passwordAllowChangeTime
replace: passwordExpirationTime
replace: passwordRetryCount
replace: pwdpolicysubentry
replace: modifiersname
modifiersname: uid=admin,ou=administrators,ou=topologymanagement,o=netscaperoot
replace: modifytimestamp
modifytimestamp: 20170509113420Z
time: 20170509123621
dn: cn=nsPwPolicyContainer,dc=test,dc=example,dc=com
changetype: add
objectClass: nsContainer
objectClass: top
cn: nsPwPolicyContainer
creatorsName: uid=admin,ou=administrators,ou=topologymanagement,o=netscaperoot
modifiersName: uid=admin,ou=administrators,ou=topologymanagement,o=netscaperoo
Теперь я хочу печатать как одну строку, только записи между временем :. Например, после времени:, я хочу распечатать все записи как одну строку, поэтому в моем случае он должен печатать как
time: 20170509123420 dn: uid=abc,ou=People,dc=test,dc=example,dc=com changetype: modify replace: passwordAllowChangeTime - replace: passwordExpirationTime - replace: passwordRetryCount - replace: pwdpolicysubentry - replace: modifiersname modifiersname: uid=admin,ou=administrators,ou=topologymanagement,o=netscaperoo t - replace: modifytimestamp modifytimestamp: 20170509113420Z
Я пробовал рекомендовать ниже, он отображается на экране, но при попытке перенаправить / добавить он не работает.
tailf /var/log/dirsrv/slapd-ldap/audit | awk '/^time:/ {if (NR!=1)print"";printf $0}{printf $0}END{print"";}' | logger
Есть ли какая-нибудь команда для этого?
Может быть, вы можете попробовать что-то вроде этого:
awk '/^time:/ { print "\n" } { printf "%s ",$0 }' /var/log/dirsrv/slapd-ldap/audit > logger