微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在grep中传递多个变量

如何解决如何在grep中传递多个变量

我有一个使用 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_nameidstatus 之一的内容的行的文本行。

然而,这是一个非常脆弱的解决方案。我不知道这些变量的实际内容是什么,但例如,如果 title_name 设置为 X.Z,它也会匹配包含字符串 XYZ 的行,因为点匹配任何字符。同样,如果 title_name 包含一个单独的 [(grep 会抱怨不匹配的括号 错误。

如果你想匹配字符串字面而不被当作正则表达式,最好将这些模式写入文件(每行一个模式)并使用

grep -F -f patternfile

用于搜索。当然,由于您使用的是 bash,如果您不想使用显式临时文件,也可以使用 process substitution

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。