我试图创建一个 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)
后续行与前面相同。