Subject: bug#26726: Support grepping multi-lines fixed-strings

From: Jim Meyering <[email-masked]>
Date: Mon, 1 May 2017 21:48:20 +0900

On Mon, May 1, 2017 at 3:38 PM, ziyunfei <[email-masked]> wrote:
> I have the same need as http://stackoverflow.com/questions/14631794/check-if-file-contains-some-text-not-regex-in-unix#comment20438757_14631832.
>
> $ cat file
> foo
> bar
>
> $ echo "$fixed_string"
> bar
> foo
>
> $ grep -Fzq "$fixed_string" file && echo "Matched" || echo "Not matched"
> Matched # false positive, -z doesn't apply to -F
>
>
> $ [[ "$(cat file)" = *"$fixed_string"* ]] && echo "Matched" || echo "not matched"
> not matched # my workaround

Consider using perl, i.e., this matches:

   $ pat='foo
  bar'
  $ printf '%s\n' foo bar | perl -0 -ne 'm!\Q'"$pat"'\E! or die'

This does not match:

  $ printf '%s\n' bar foo | perl -0 -ne 'm!\Q'"$pat"'\E! or die'
  Died at -e line 1, <> chunk 1.