gpt4 book ai didi

arrays - 从 bash 中的多个数组中的相同数据位置提取

转载 作者:行者123 更新时间:2023-11-29 09:31:58 24 4
gpt4 key购买 nike

背景

我在这里尝试做的是从一个包含 PID 信息的文件中读取并将列分离到数组中。我已经完成了这部分,尽管我认为这是比我目前拥有的更好的方法(对同一个文件进行 4 次分类)。

pid=( $(cat /tmp/deadpidlist.log | awk -F " " '{print $1}') )
cpu=( $(cat /tmp/deadpidlist.log | awk -F " " '{print $2}') )
mem=( $(cat /tmp/deadpidlist.log | awk -F " " '{print $3}') )
ctime=( $(cat /tmp/deadpidlist.log | awk -F " " '{print $4}') )

我在做什么?天啊

之后,我需要遍历每个 PID,如果 pid 符合我正在寻找的标准,则将相应的 cpu 使用率、内存使用率和 cpu 时间放在一个文件中,然后将该文件通过电子邮件发送出去。

for i in "${pid[@]}"
do
...
if grep -Fxq "$pattern" /tmp/or_report.log; then
echo "$i" >> /tmp/deadpidwalking.log

我的其余代码都放在要点上:https://gist.github.com/sithtoast/e1654adab3cceb137ba2

谢谢!

最佳答案

bash 中的一个简单循环就足够了。请注意很少看到使用下标数组作为 read 的参数。

declare -a pid cpu mem ctime
i=-1
while ((i++)); read "pid[i]" "cpu[i]" "mem[i]" "ctime[i]" and_the_rest; do
:
done < /tmp/deadpidlist.log

一个更直接的循环是

declare -a pid cpu mem ctime
while read a b c d and_the_rest; do
pid+=("$a")
cpu+=("$b")
mem+=("$c")
ctime+=("$d")
done < /tmp/deadpidlist.log

关于arrays - 从 bash 中的多个数组中的相同数据位置提取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25692047/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com