如何创建一个 Bash 脚本,该脚本可以在文件中搜索字符串并获取该字符串的数值并与另一个值进行比较

如何创建一个 Bash 脚本,该脚本可以在文件中搜索字符串并获取该字符串的数值并与另一个值进行比较

我试图创建一个 bash 脚本来执行此操作

我有一个文本文件...

  • 文件输出可能不具有正确的结构。
  • 需要检查该文件是否包含字符串test

    如果是,则获取与该字符串关联的数值....

    "test : 201"  
    

    将该值与另一个参考数字 100 进行比较
    100 是用户输入的值。

    if 201> 100  
    

    这样做..
    否则
    这样做..

我怎样才能实现这个目标?

答案1

我认为您正在寻找一个可以接受两个参数(文件名和参考编号)的 shell 脚本。我们将文件称为 F,将参考编号称为 R。

如果文件 F 包含一行形式test : N,其中 N 是数字,并且您希望在 N > R 时执行某些操作,在 N <= R 时执行替代操作。

如果我正确理解了这个问题,这个 shell 脚本应该可以解决问题:

matching=$(grep "test" $1 | head -n 1 | cut -d ":" -f 2)                         
if [ -z $matching ]; then                                                        
  echo "no matching lines!" >&2                                                  
else                                                                             
  trimmed=$(echo $matching | xargs)                                              
  if [ $trimmed -gt $2 ]; then                                                   
    echo "greater"                                                               
  else                                                                           
    echo "less than or equal to"                                                 
  fi
fi

假设你将其保存在名为的文件中myscript。然后你可以运行./myscript input.txt 100,如果input.txt包含类似于以下内容的行,则test : 52你将看到less than or equal to它回显到标准输出。

更新:提问者在评论中列出了另一种情况,即一个文件中可能有多行匹配test : n。需要选择与之关联的最大值test并将其与引用进行比较。只需修改脚本中的第一行:

matching=$(grep "test" $1 | cut -d ":" -f 2 | sort -gr | head -n 1)

后续行与前面相同。

相关内容