gpt4 book ai didi

linux - 如何使用 Grep 命令在文本文件中查找特定值

转载 作者:行者123 更新时间:2023-12-03 09:59:16 26 4
gpt4 key购买 nike

我需要 grep 一个名为 daily_fails_count.csv 的文件,但只找到失败的次数。
在该文件中是这样的,规模更小:

January,1,0,0
January,1,1,0
January,1,2,0
January,1,3,0
January,1,4,0
January,1,5,0
January,1,6,0
January,1,7,0
January,1,8,0

它的格式是“月、日、小时、故障”。它贯穿所有月份。最后一个值是当时发现的失败次数。我知道这里都说 0 但那是因为那里没有发现故障,其他日期有故障。

我不太擅长 Linux 脚本中的 grep 命令,所以我的问题是,我如何 grep 找到文件中的最后一位数字?

我正在一个名为 make_accum_fail_counts.sh 的文件中编写这个脚本,我将这样运行它:
bash make_accum_fail_counts.sh daily_fail_counts.csv > accum_fail_counts.csv

所以我使用daily_fail_counts.csv 作为新脚本的输入。到目前为止,这是我的脚本:
#!/bin/bash

if [ $# == 1 ]
then
logFile=$1
fi

cat $logFile > tmpFile

hour=0
failure=0

while [ $hour -le 23 ]
do
if [ $hour -le 23 ]
then
failure=`grep "*,*,*,^[0-10]" tmpFile | wc -l`
fi
echo "$hour,$failure"
hour=$((hour+1))
failure=0
done
rm -rf tmpFile

我只需要帮助我的 grep 命令:
failure=`grep "*,*,*,^[0-10]" tmpFile | wc -l`

只是为了发现,在所有的日子里,每时每刻都在失败。所以它的输出是:
0,1000
1,1040
2,2888

0:00-1:00 之间有 1000 次失败,1:00-2:00 之间有 1040 次失败,依此类推。提前致谢。

最佳答案

cat yourfile.csv | cut -d',' -f 4 | paste -s -d+ - | bc

总结所有的失败。使用 cut -d',' -f 4 yourfile.csv用逗号分割每一行并得到第四个值,这会给你一个数字列表,然后 use a shell command to sum a list of numbers .

您可以 grep 将其过滤到小时,例如
cat yourfile.csv | cut -d',' -f 3,4 | grep ^0, | cut -d',' -f 2

获取所有第 0 小时的失败计数。
for hour in {0..23}; do
cat yourfile.csv | cut -d',' -f 3,4 | grep ^$hour, | cut -d',' -f 2 | paste -s -d+ - | bc
done

获取每小时的总数。

如果您希望它们按天分组,您可以阅读 date命令,弄清楚如何让它输出像 January,1, 这样的字符串并添加一个外部 for循环到上述命令,该命令将每一行通过 grep与该 date 的输出命令。

就个人而言,此时我将开始编写 Python 而不是 bash。 pandas图书馆更适合这个。

关于linux - 如何使用 Grep 命令在文本文件中查找特定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58760499/

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