gpt4 book ai didi

linux - Bash:从文件中读取时,剪切不会剪切第一行

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:18:51 26 4
gpt4 key购买 nike

我正在尝试在 bash 中制作一个 shell 脚本,它将一个日志文件作为参数,然后要求在该文件中搜索一个事件。日志文件如下所示:

CallTilEdb  8
CallCustomer 9
CallTilEdb 4
CustomerChk 10
CustomerChk 15
CallTilEdb 16

所以首先是事件的名称,然后是它花费的时间,由制表符分隔。 bash 脚本的要点是搜索指定的事件并添加在该事件上花费的总时间。到目前为止,我的脚本如下所示:

#!/bin/bash

declare -i sumTime=0

echo "Which event do you want to search for?"
read event

while read -r line
do
echo $line; cut -f1
if [ $(echo $line; cut -f1) == $event ];then
echo $line; cut -f2
fi
done < $1


echo "The sum is $sumTime"

我现在不添加任何内容,因为首先我需要解决我在 cut 中遇到的这个问题。我遇到的问题是,它不会剪切第一行,但会按照我想要的方式剪切所有其他行。这弄乱了我的 if 语句,给它太多的参数。这是现在运行我的脚本的结果:

Which event do you want to search for?
CallTilEdb
CallTilEdb 8 #first line of the file
CallCustomer
CallTilEdb
CustomerChk
CustomerChk
CallTilEdb
bin/vistid.sh: line 11: [: too many arguments
The sum is 0

我对 bash 很陌生,所以这可能是一个愚蠢的问题,但我就是无法理解它。非常感谢任何有关我如何解决此问题的指南。

PS:现在回显 f1 只是为了看看是什么导致了错误。

最佳答案

您可以使用 read 本身将行拆分为两个字段。

#!/bin/bash

declare -i sumTime=0

echo "Which event do you want to search for?"
read event

while read -r column1 column2
do
if [ "$column1" = "$event" ];then
sumTime+=$column2
fi
done < "$1"


echo "The sum is $sumTime"

关于linux - Bash:从文件中读取时,剪切不会剪切第一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25765013/

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