【发布时间】:2018-07-08 07:30:48
【问题描述】:
问题:
我想确保某个字符串出现在文件中,并且另一个字符串不出现在文件中。如果两个条件都满足,命令应该会产生一些输出。
这是我开始的:
我有一个 cronjob,它会定期下载带有 curl 的网页。
每当某个文本 ("inStock':'True") 出现在该网页的一行中时,我希望得到通知。这部分很简单,效果很好。这是我使用的 cronjob:
curl --silent --cookie "myStore=true; storeSelected=131; ipp=25; SortBy=match; rearview=501552" http://www.microcenter.com/product/501552/AIY_VISION_KIT | grep "inStock':'True"
因为这是作为 cronjob 运行的,所以每当“grep”产生任何输出(例如“'inStock':'True',”)时,我都会收到一封电子邮件。
现在又出现了一个问题:如果文本(“此产品不再可用”)出现在网页的另一行上,我不想毕竟要通知。
有什么好的解决办法吗?不一定是 grep,awk 或 perl 也可以。
这是一个示例文件example.txt,我们可以使用它来代替特定的网页和 curl:
This product is no longer available
'inStock':'True',
所以如果我跑
cat example.txt | grep "inStock: 'true"
它会输出
inStock: 'true'
无论文件中的其他行是什么。我想要的是一个命令(或多个命令),如果文件中的另一行包含文本“此产品不再可用”,则不会产生输出。
【问题讨论】:
-
请在你的问题更清楚,因为它根本不清楚。
-
查看How to Ask,然后更新您的问题以包含缺少的minimal reproducible example,以便人们可以帮助您。
-
我更改了问题以包含我的具体问题。而且我有一个不太好的示例解决方案。
-
尽管如此,您仍然没有提供缺失的样本输入和预期输出。您需要一个工具,其输入是 curl 的输出,其输出是 some output 以放入电子邮件中。因此,请向我们展示一个简洁、可测试的示例,其中包含 curl 的输出示例(即您要编写的工具的输入)以及您希望该工具在给定该输入的情况下产生的输出。
-
@EdMorton 好的,我提供了一个示例文件,而不是依赖 curl。