У меня была потрясающая помощь по сценарию AWK здесь , и я подумал, что было бы очень здорово иметь точно такой же вывод, который я наблюдаю на CLI, чтобы перейти к файлу CSV.Я провел исследование и нашел отличный ответ здесь , он в основном показал код, подобный этому:
awk '{print $1","$2","$3","$4","$5}' < /tmp/file.txt > /tmp/file.csv
Первая проблема, которую я имею, это /tmp/file.txtне нужен, так как мой код уже производит строку с разделенными значениями.Я не знаю, будут ли мои переменные работать без запуска всех новых команд AWK, поэтому я бы предпочел просто пометить их до конца предыдущей команды AWK, если это возможно.Но я не знаю, как реализовать ту же концепцию в реальном сценарии, который я использую.Может ли кто-нибудь показать мне схему форматирования, которая мне понадобится пометить в конце моего скрипта?
Мой постоянно развивающийся скрипт выглядит так:
#!/bin/bash
CURRENT_DATE=`date +%Y-%m-%d`
tail -fn0 /var/log/pi-star/MMDVM-"$CURRENT_DATE".log | gawk '
match($0, /received.*voice header from ([[:alnum:]]+) to ([[:alnum:]]+
[0-9]+)/, a) {
in_record = 1
call_sign = a[1]
channel = a[2]
}
in_record && match($0, /DMR ID: ([0-9]+)/, a) {
dmr_id = a[1]
}
in_record && match($0, /([0-9.]+) seconds, ([0-9]+)% packet loss, BER:
([0-9.]+)%/, a) {
in_record = 0
print call_sign, channel, dmr_id, a[1], a[2], a[3]
}
' OFS=,
done
Я все еще хочу отслеживать черезтерминал, я просто думаю, что добавленный вывод в CSV будет глазурью на торте.Я обдумываю это?Это должен быть отдельный скрипт?Если да, то как?