【问题标题】:Output sar command results to a csv file将 sar 命令结果输出到 csv 文件
【发布时间】:2013-03-11 21:22:29
【问题描述】:

我对 shell 编程比较陌生,想知道是否有一种简单的方法可以将 sar 命令的结果输出到 csv 文件。使用sar > file1.csv 可以完成这项工作,但格式不正确。所有数据都存在于一列中。我试过这个,但它更糟

sar -d -u -w 1 1 | grep -v Average | grep -v Linux | tr -s ' ' ',' | tr -d '\n' > file1.csv

谁能给我正确的脚本来将sar 命令的输出存储在csv 文件中。帮助将不胜感激。

【问题讨论】:

    标签: shell unix sar


    【解决方案1】:

    我知道这有点旧,但您应该或可以使用 sadf -dh -- <sar command>。它是sysstat 包的一部分,它将为您提供csv 输出,而无需awk 和正则表达式。实际上,最新版本也能够将信息输出到 JSON 和 XML。你可以选择你的毒药:)

    简单示例:

    $ sadf -dh -- -p
    localhost.localdomain;-1;2014-06-13 08:47:02 UTC;LINUX-RESTART
    # hostname;interval;timestamp;CPU;%user;%nice;%system;%iowait;%steal;%idle[...]
    localhost.localdomain;600;2014-06-13 09:00:01 UTC;-1;8.80;0.01;1.65;9.51;0.00;80.03
    localhost.localdomain;600;2014-06-13 09:10:01 UTC;-1;3.03;0.71;2.41;0.81;0.00;93.05
    

    【讨论】:

    • 如果它是一个多 cpu-core 系统,在 sadf 中省略 h 选项将每个 cpu-core 打印一行。此文件将更易于处理。
    • 这个答案被严重低估了。
    • 此答案应标记为解决方案。它不仅根据问题的构建方式给出了答案(管道 grep、awk 等,用于冗长而复杂的单行),而且还为工作提供了正确的工具,使最终的解决方案更简单、更强大!
    【解决方案2】:
    sar -d -u -w 1 1 | grep -v Average | grep -v Linux |awk '{if ($0 ~ /[0-9]/) { print $1","$2","$4","$5","$6; }  }'
    
    
    
    22:14:04,CPU,%nice,%system,%iowait
    22:14:05,all,0.00,8.53,0.00
    22:14:04,proc/s,,,
    22:14:05,0.00,,,
    22:14:04,DEV,rd_sec/s,wr_sec/s,avgrq-sz
    22:14:05,dev8-0,0.00,0.00,0.00
    

    上面的输出享受

    【讨论】:

    • 您也可以在 BEGIN 块中设置 OFS=","。
    • 谢谢。是否可以将其扩展到顶部命令?我试过了,但我看不到 col 名称。 top -n1 -b |awk '{if ($0 ~ /[0-9]/) { 打印 $1","$2","$4","$5","$6","$7","$8", "$9","$10","$11","$12","$13","$14","$15; } }' > file2000.csv
    • 当然,因为它正在捕获 0-9,因此您可以将其去掉,这将列出所有顶级结果 top -n1 -b |awk '{ print $1","$2", "$4","$5","$6","$7","$8","$9","$10","$11","$12","$13","$14","$15; }' 或 ... top -n1 -b |awk '{if (($1 ~ /^[0-9]/) || ($0 ~ /PID/ )) { print $1","$2","$4 ","$5","$6","$7","$8","$9","$10","$11","$12","$13","$14","$15; } }' 将列出 PID 行和所有最上面的结果
    • 工作得很好。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-27
    • 2021-06-15
    • 1970-01-01
    • 1970-01-01
    • 2015-02-07
    • 1970-01-01
    • 2020-06-15
    相关资源
    最近更新 更多