gpt4 book ai didi

linux - 代码/模块,用于评估要在 Linux 上的 awk 或 bash 中使用的 bool 表达式

转载 作者:太空宇宙 更新时间:2023-11-04 10:58:39 25 4
gpt4 key购买 nike

<分区>

我正在使用 awk 脚本处理一些 bash,以搜索许多文件并返回匹配各种条件组合的各种行组合。

我想要一些方法来为我的脚本添加能够处理简单但通用的 bool “查询”表达式的功能 - 例如:

A AND (B OR C) AND NOT D

其中 A、B、C 和 D 是 bash 或 awk 变量,其值类似于 TRUE=0FALSE!=0 或相反。

我的代码会设置每个变量,然后将使用这些变量的 bool 表达式传递给可以对其求值的东西。

我真的不需要像嵌套括号这样花哨的东西,但一个级别真的很有帮助。我不需要广泛的表达式错误检查/恢复。如果我写了一个错误的表达式,那是我的问题,只要它不会因为 bash/awk 语法错误之类的东西而完全杀死我的脚本的其余部分。

解决方案可以是 bash 或 awk 的 native 解决方案,也可以是从返回真或假 (0/1) 的任一语言中调用的外部程序。

我知道如何使用 if 语句等对此类内容进行硬编码,但我需要能够更改每次搜索的条件,因此不能进行硬编码。

我绝对不知道用 lex/yacc 之类的东西来滚动我自己的解析器。

sedfindgrep 之类的工具很棒,但是(至少就它们自己而言)它们无法完成我的工作想要并且对用于编写临时查询的语法过于挑剔。

作为一种替代方案,我正在考虑尝试将我的查询转换为简单的数学运算,并通过 (( query )) 将它们放入 bash - 例如对于上面的示例(没有使用完全防御的语法使示例变得丑陋,并且所有变量都设置为 1 表示真,0 表示假。)

(( $A * ($B + $C) * (! $D) ))

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