我将原始日志片段作为自定义命令的输出转储到控制台上:
bash$ custom-command
current-capacity: 3%, buffer: 1024, not-used/total: 10/10, IsEnabled: 0. Up since Thu Jun 23 11:54:14 2022
current-capacity: 0%, buffer: 1024, not-used/total: 25/25, IsEnabled: 0. Up since Thu Jun 23 11:54:14 2022
current-capacity: 0%, buffer: 1024, not-used/total: 15/15, IsEnabled: 1. Up since Thu Jun 23 11:54:14 2022
我需要有CSV格式,如下面捕获的实时状态的基础上,某些条件,然后我可以重定向输出到CSV文件在定期间隔之前加载到SQL数据库。
current-capacity, buffer, not-used/total, IsEnabled, Up since
3%, 1024, 10/10, 0, Thu Jun 23 11:54:14 2022
0%, 1024, 25/, 0, Thu Jun 23 11:54:14 2022
0%, 1024, 10/10, 0, Thu Jun 23 11:54:14 2022
我试过AWK,但仍然面临问题,因为它的大部分是逗号分隔的,除了IsEnabled: 0
以.
结尾,然后是Uptime
。有办法吗?我对awk还很陌生。
6条答案
按热度按时间flvlnr441#
第一个
zzzyeukh2#
它只是写一个正则表达式匹配输出并转换它。
vsaztqbk3#
在每个Unix机器上的任何shell中使用任何awk:
在上面的第一步中,使用
match() { ... }
使每个输入行末尾的. Up since Thu
字段使用与输入, Up since: Thu
的其余部分相同的,
和:
分隔符,这样,代码的其余部分解析现在一致的输入就很容易了。vfh0ocws4#
欢迎使用StackOverflow。感谢您提供示例数据和所需的输出。建议您在此处学习markdown formatting syntax,因为您的代码是以带引号的HTML形式输入的。最好使用代码标记。这将输出固定宽度的文本,并且更易于阅读。
对于您的问题,您可以使用
gawk
中的match
语句来捕获所有使用正则表达式的字段,因为您的输入数据是以相同的方式格式化的。类似这样的东西会做所需的:
lfapxunr5#
输入格式,是Miller输入格式之一
如果你只是跑
您将拥有
sshcrbum6#
|