使用Bash在curl输出中搜索字符串

时间:2019-05-22 12:39:14

标签: regex bash

尝试以小写字符串的形式获取网页,然后在字符串输出中搜索子字符串

我的尝试

  1 #!/usr/bin/env bash
  2
  3 URL="https://somesite.com"
  4 MOVIES_SOURCE="movies.txt"
  5 PAGE=`curl "$URL"` | tr '[:upper:]' '[:lower:]'
  6
  7 while IFS= read -r movie
  8 do
  9   FOUND="$($PAGE =~ "$movie")"
 10   echo $FOUND
 11   if [[ $FOUND ]]; then
 12    echo "$movie found"
 13   fi
 14 done < $MOVIES_SOURCE
 15

运行此命令时,我收到line 9: =~: command not found

$movie变量有效,并且包含movies.txt中的每一行,但我一直在努力找出这一行!

1 个答案:

答案 0 :(得分:1)

如果要在bash中使用正则表达式匹配:

if [[ $PAGE =~ $movie ]]; then
    echo "$movie found"
fi

示例:

PAGE="text blah Avengers more text"
movie="Avengers"
if [[ $PAGE =~ $movie ]]; then
    echo "$movie found"
fi

给予:

Avengers found

:捕获整个curl命令的输出:

PAGE=$(curl "$URL" | tr '[:upper:]' '[:lower:]')
  • 与反引号相比,总是更喜欢$()
  • 您必须包装整个命令,才能使$PAGE包含转换成小写字母的输出。