Вы можете использовать glibc getent
здесь:
$ getent ahostsv4 0xD83ACD2E | { read ip rest && getent hosts "$ip"; }
216.58.205.46 mil04s24-in-f46.1e100.net
Другой perl
подход:
$ perl -MSocket -le '($n)=gethostbyaddr(inet_aton("0xD83ACD2E"), AF_INET); print $n'
mil04s24-in-f46.1e100.net
$ cat tst.awk
BEGIN {
OFS = "\t"
numTags = split("Time id status tag price barcode",tags)
for (tagNr=1; tagNr<=numTags; tagNr++) {
tag = tags[tagNr]
printf "%s%s", tag, (tagNr<numTags ? OFS : ORS)
}
}
/= Request =/ {
time = substr($0,1,23)
}
sub(/^[[:space:]]*([0-9]+\|)?/,"") {
tag = val = $0
sub(/[[:space:]]*=.*/,"",tag)
sub(/[^=]+=[[:space:]]*/,"",val)
tag2val[tag] = val
}
/^}/ {
tag2val["Time"] = time
for (tagNr=1; tagNr<=numTags; tagNr++) {
tag = tags[tagNr]
val = (tag in tag2val ? tag2val[tag] : "Null")
printf "%s%s", val, (tagNr<numTags ? OFS : ORS)
}
delete tag2val
}
$ awk -f tst.awk file | column -s$'\t' -t
Time id status tag price barcode
27/12/2020 00:05:30,848 Null 0 abcdef 35 Null
27/12/2020 00:05:30,848 123 404 ghijkl 35 26121111
27/12/2020 00:10:35,941 Null 0 abcdef 35 Null
27/12/2020 00:10:35,941 123 404 ghijkl 35 26121111