【发布时间】:2019-06-09 21:15:12
【问题描述】:
我在 AWK 脚本 here 上获得了惊人的帮助,我心想,如果我在 CLI 上监控完全相同的输出以转到 CSV 文件,那真是太酷了。我做了研究并找到了一个很好的答案here,它基本上显示了这样的代码:
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 的输出将是锦上添花。我是不是想多了?它应该只是一个单独的脚本吗?如果有,怎么做?
【问题讨论】:
-
听起来你在找tee
-
TEE 看起来是一个非常强大的命令!我今天肯定会研究它。谢谢。
-
我已尝试再次插入 TEE,但存在架构问题。我将 TEE 放在 TAIL 和 GAWK 之间,它会将带尾的文档完美地输出到辅助文件(包括 GAWK 删除的所有垃圾),但我尝试在很多地方在 GAWK 之后放置相同的 TEE 命令,但它不起作用,不断的语法错误。很遗憾,因为在阅读 TEE 之后,它看起来像是完美的解决方案。 ://
-
wrt
constant syntax errors- 如果您需要帮助调试语法错误,您应该告诉我们您收到的错误消息是什么。 -
答案已更新。很抱歉没有发布确切的错误,但谢谢 Ed。
标签: bash shell csv awk command-line-interface