linux - 如何在grep中传递多个变量

标签 linux bash scripting centos

我有一个使用 curl 下载的 json 文件。它有一些融合页面的信息。我只想提取下载信息的 3 个部分 - 即页面: id、状态和头衔 .
我为此编写了一个 bash 脚本,但我的限制是我不确定如何 在 grep 命令中传递多个变量

id=id         #hardcoded 
status=status    #hardcoded

echo Enter title you are looking for: #taking input from user here read title_name echo echo echo Here are details

curl -u username:password -sX GET "http://X.X.X.X:8090/rest/api/content?type=page&start=0&limit=200" | python -mjson.tool | grep -Eai "$title_name"|$id|$status" 

最佳答案

除了一个错字(你有一个不平衡的报价 - 在你发布一些东西之前,请务必检查语法的正确性),你的方法的基本思想将适用于

grep -Eai "$title_name|$id|$status" 
将选择那些包含那些包含变量 title_name 之一内容的行的文本行, idstatus .
但是,这是一个非常脆弱的解决方案。我不知道这些变量的实际内容是什么,但例如,如果 title_name被设置为 X.Z ,它也会匹配包含字符串 XYZ 的行,因为点匹配任何字符。同样,如果 title_name例如,将包含一个单独的 [( , grep 会提示不匹配的括号错误。
如果要匹配字符串 字面意思 并且不被视为正则表达式,最好将这些模式写入文件(每行一个模式)并使用
grep -F -f patternfile
用于搜索。当然,既然你用的是bash,也可以用process substitution如果您不想使用显式临时文件。

关于linux - 如何在grep中传递多个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67895493/

相关文章:

string - bash 脚本基本字符串比较

linux - 如何从文本文件获取输入并将其用作 shell 脚本中的变量?

c++ - 输入命令作为另一个应用程序的参数

c - linux上不解析/proc/cpuinfo获取CPU型号名称

linux - 通过命令行创建具有不同配置文件的 Linux 用户

linux - tail 未在 bash 脚本中提供输出

bash shell 重做变量用下划线替换点

php - 用于 PHP 的硬件随机数生成器

regex - 使用 sed 仅获取行号 "grep -in"

scripting - Netsuite Suitescript可以修改文件柜中的文件吗?