多个字符串在curl -s之后使用Grep筛选。

huangapple go评论116阅读模式
英文:

Grep multiple strings after curl -s

问题

以下是翻译好的部分:

  1. 我正在尝试编写一个Bash脚本,其中我提供了一些变量,如下所示:
  2. var1="text1"
  3. var2="text2"
  4. var3="text3"
  5. var4="text4"
  6. var5="text5"
  7. var6="text6"
  8. 我已经尝试了一个变量,并且以下脚本可以正常工作:
  9. if curl -s "https://web.net/list.txt" | grep $var1
  10. echo $var1 is on the list
  11. else
  12. echo "FFHGFHFGHFHFG"
  13. fi
  14. 我一直在尝试输入其他变量,因为这些是硬编码的,不会更改,就像这样:
  15. if curl -s "https://web.net/list.txt" | grep "$var1\|$var2"
  16. if curl -s "https://web.net/list.txt" | grep '$var1|$var2'
  17. 我记不清我尝试过的所有方法,但这是我目前的尝试。
  18. 想法是在给定的网站中查找这些值,如果存在则输出这些值,否则不输出任何内容。
英文:

I'm trying to write a bash script where I give a few variables as such:

  1. var1="text1"
  2. var2="text2"
  3. var3="text3"
  4. var4="text4"
  5. var5="text5"
  6. var6="text6"

I've tried it with one variable and the following script works fine:

  1. if curl -s "https://web.net/list.txt" | grep $var1
  2. echo $var1 is on the list
  3. else
  4. echo "FFHGFHFGHFHFG"
  5. fi

I've been trying to input the other variables, which are hardcoded as those are not going to change, like this:

  1. if curl -s "https://web.net/list.txt" | grep "$var1\|$var2"
  2. if curl -s "https://web.net/list.txt" | grep '$var1|$var2'

I cannot remember all of the ways I've tried to do this, but that is my current attempt.

The idea is to find those values in a given site, output those values if the exist and nothing else.

答案1

得分: 1

这部分的翻译如下:

这个操作成功:

  1. var1=head;var2=body;curl -s http://free.fr | grep "$var1\|$var2"

最后变成了这样:

  1. var1=something1;var2=something2;var3=something3;var4=something4;var5=something5;var6=something6;

代码运行:

  1. var1=something1;var2=something2;var3=something3;var4=something4;var5=something5;var6=something6;
  2. if curl -s https://website.net/text.txt | grep "$var1\|$var2\|$var3\|$var4\|$var5\|$var6"
  3. then
  4. echo $var1
  5. echo $var2
  6. else (...)

之后,我将结果发送到文件以供进一步分析。

谢谢大家。

英文:

This worked:

  1. var1=head;var2=body;curl -s http://free.fr | grep "$var1\|$var2"

Ended up doing this:

  1. var1=something1;var2=something2;var3=something3;var4=something4;var5=something5;var6=something6;

Code runs

  1. var1=something1;var2=something2;var3=something3;var4=something4;var5=something5;var6=something6;
  2. if curl -s https://website.net/text.txt | grep "$var1\|$var2\|$var3\|$var4\|$var5\|$var6"
  3. then
  4. echo $var1
  5. echo $var2
  6. else (...)

and so on.

After that I'm sending the results to a file for further analysis.

Thanks all.

答案2

得分: 1

您可以向 grep 提供多个模式,如果其中任何一个匹配成功,它都会返回成功:

  1. if curl -s 'https://web.net/list.txt' | grep -e "$var1" -e "$var2" -e "$var3" -e "etc."; then
  2. echo "包含 $var1$var2$var3 或其他...";
  3. fi

这样做还允许您指定 -F 以仅匹配固定字符串。这有助于防止变量包含元字符如 *. 时出现问题。

英文:

You can provide multiple patterns to grep and it will return successfully if any of them matches:

  1. if curl -s 'https://web.net/list.txt' | grep -e "$var1" -e "$var2" -e "$var3" -e "etc."; then
  2. echo "Contains $var1 or $var2 or $var3 or ..."
  3. fi

Doing it this way also allows you to specify -F to match only on fixed strings. This helps to prevent issues if your variables contain meta characters such as * or ..

huangapple
  • 本文由 发表于 2023年8月4日 01:06:59
  • 转载请务必保留本文链接:https://go.coder-hub.com/76830232.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定