要将Bash脚本Perf Stat转为CSV格式,可以使用以下解决方法:
perf stat -e -p sleep | awk -F '[\t%]+' '
/Performance counter stats/ {
getline; getline; getline;
printf "Event,Count\n";
}
/(\S+)\s+(\d+)/ {
printf "%s,%d\n", $1, $2;
}'
这个示例将perf stat命令的输出作为输入,使用awk命令进行解析。它使用制表符和百分号作为字段分隔符,并打印出Event和Count列的标题。然后,对于每个非空行,将事件和计数打印为CSV行。
请注意,你需要将
替换为你要监视的事件列表,
替换为要监视的进程ID,
替换为监视的持续时间(以秒为单位)。
import subprocess
import re
import csv
events = ''
pid = ''
duration = ''
output = subprocess.check_output(['perf', 'stat', '-e', events, '-p', pid, 'sleep', duration])
lines = output.decode().split('\n')
data = []
for line in lines:
match = re.match(r'\s*([\w\s]+)\s+(\d+)', line)
if match:
event = match.group(1)
count = match.group(2)
data.append([event, count])
with open('output.csv', 'w', newline='') as csvfile:
writer = csv.writer(csvfile)
writer.writerow(['Event', 'Count'])
writer.writerows(data)
这个示例使用Python中的subprocess模块执行perf stat命令并获取输出。然后,它将输出的每一行解析为事件和计数,并将它们添加到一个列表中。最后,它使用csv模块将列表中的数据写入到名为output.csv的CSV文件中。
请注意,你需要将
替换为你要监视的事件列表,
替换为要监视的进程ID,
替换为监视的持续时间(以秒为单位)。
以上是两种将Bash脚本Perf Stat转为CSV格式的解决方法。你可以选择其中一种来实现你的需求。
下一篇:Bash脚本启动新终端