複数の行にわたるパターンマッチング

ティムブリガム

複数の出力行にまたがるときにパターン「301domaname.com200」がBASH内に存在するかどうかを検証するための迅速で簡単な方法は何ですか?

私は次のようなものを使用していました:

 awk '/301|domain.com|200/'
 pcregrep -M '301|domain\.com|200'

しかし、順序は重要ではありません。私はそれをどのように述べるのかわかりません。どうやらうまくいくと思ったのは、行末をキャッチしていないことです。

pcregrep -M '301.*domain\.com.*200'

バックグラウンド:

小さなmod_rewriteサーバーを構築していますが、どのドメインがどの宛先にリダイレクトされているかを監視する方法が必要です。

その結果、私はこれを処理する小さなNagiosチェックスクリプトを組み立てています。

私がこれまでに持っているのは次のとおりです。

curl qa-mod-rewrite.domain.com -i -I -L

HTTP/1.1 301 Moved Permanently
Via: 1.1 GREGORY
Connection: close
Proxy-Connection: close
Date: Thu, 14 Nov 2013 16:35:19 GMT
Location: http://qa.domain.com/
Content-Type: text/html; charset=iso-8859-1
Server: Apache/2.2.3 (CentOS)

HTTP/1.1 200 OK
Via: 1.1 GREGORY
Connection: Keep-Alive
Proxy-Connection: Keep-Alive
Content-Length: 56772
Expires: -1
Date: Thu, 14 Nov 2013 16:35:03 GMT
Content-Type: text/html; charset=utf-8
Server: Microsoft-IIS/7.5
Cache-Control: no-cache, no-store
Pragma: no-cache
X-AspNet-Version: 2.0.50727
Set-Cookie: cfcausa.qa#sc_wede=1; path=/
Set-Cookie: ASP.NET_SessionId=i4z1c4ahqoiw13552z413hbs; path=/; HttpOnly
X-Powered-By: ASP.NET
ステファン・チャゼラス

301.*domain\.com.*200たとえば次のように一致するように、そこには誤検知の余地があります。

HTTP / 1.1 404見つかりません
Content-Length:301 0 
X-Pingback:http:// blah。domain.com / xmlrpc
最終更新日:20011月14日木曜日9 19:27:05 GMT

あなたはもう少し徹底して、例えばそれを書くことができます:

curl -sIL http://qa-mod-rewrite.domain.com |
  tr -d '\r' |
  awk -v RS= '
    NR == 1 && $2 == "301" && /\nLocation: [^\n]*domain\.com/ {redir=1}
    $2 == "200" {end=1}
    END {exit !(redir*end)}'

変数データの場合:

url=$1
EXPECTED_REDIRECTION=$2
EXPECTED_REDIRECTION_CODE=$3
EXPECTED_TERMINAL_CODE=$4
export EXPECTED_REDIRECTION EXPECTED_REDIRECTION_CODE EXPECTED_TERMINAL_CODE

curl -sIL "$url" |
  tr -d '\r' |
  awk -v RS= '
    BEGIN {
      re = ENVIRON["EXPECTED_REDIRECTION"]
      gsub(/[][^.$+?\\()]/, "\\&",re)
      re = "\nLocation: [^\n]*" re
    }
    NR == 1 && $2 == ENVIRON["EXPECTED_REDIRECTION_CODE"] && $0 ~ re {redir=1}
    $2 == $ENVIRON["EXPECTED_TERMINAL_CODE"] {end=1}
    END {exit !(redir*end)}'

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

パターンマッチング後に複数行を印刷するための構文を理解する

分類Dev

複数行にわたるPerl正規表現のマッチング

分類Dev

複数行のパターンマッチング

分類Dev

1行で複数のawkパターンマッチング

分類Dev

複数行のマッチングパターン

分類Dev

複数のパラメータにわたるマッピング-pmap_dfrを使用

分類Dev

文中の複数の値にパターンマッチする

分類Dev

複数のパターンマッチングと1行での印刷

分類Dev

パターンマッチングに基づいて複数のアサートを行う

分類Dev

パターンマッチングに基づいて複数のアサートを行う

分類Dev

Regexp-複数の文字のパターンマッチング

分類Dev

複数のデータフレームにわたるデータ分析?パネルまたはマルチインデックス?

分類Dev

複数の可能なグループによるScala文字列パターンマッチング

分類Dev

正規表現によってパターンマッチングが行われるBashの場所は?

分類Dev

複数行のパターンマッチングに基づいて特定の行を結合する必要がある

分類Dev

この複数行のJavaパターンマッチングが行われないのはなぜですか?

分類Dev

パターンマッチングのためのR関数

分類Dev

strsplitパターンマッチングを使用して文字列を複数の列に拡散する

分類Dev

pom.xmlの複数行にわたるBashパターン一致

分類Dev

OCamlGADT-パターンマッチングが間違ったタイプの引数に一致する

分類Dev

1行のデータを複数の行にマッピングするSparkRDD

分類Dev

Rustで複数のタイプのパターンマッチングを行うことは可能ですか?

分類Dev

パターンマッチングの代わりにScalaオプションの高階関数

分類Dev

Spacyでマッチャーに複数のパターンを追加する方法

分類Dev

パターンマッチングのためにタプルを分解する

分類Dev

Pythonでの複数行の正規表現パターンのマッチング

分類Dev

Scalaの複数タイプのパターンマッチング

分類Dev

Bash - 複数行にわたる複数のコマンド

分類Dev

マルチプロセッシングのために複数のコマンドを実行するPython

Related 関連記事

  1. 1

    パターンマッチング後に複数行を印刷するための構文を理解する

  2. 2

    複数行にわたるPerl正規表現のマッチング

  3. 3

    複数行のパターンマッチング

  4. 4

    1行で複数のawkパターンマッチング

  5. 5

    複数行のマッチングパターン

  6. 6

    複数のパラメータにわたるマッピング-pmap_dfrを使用

  7. 7

    文中の複数の値にパターンマッチする

  8. 8

    複数のパターンマッチングと1行での印刷

  9. 9

    パターンマッチングに基づいて複数のアサートを行う

  10. 10

    パターンマッチングに基づいて複数のアサートを行う

  11. 11

    Regexp-複数の文字のパターンマッチング

  12. 12

    複数のデータフレームにわたるデータ分析?パネルまたはマルチインデックス?

  13. 13

    複数の可能なグループによるScala文字列パターンマッチング

  14. 14

    正規表現によってパターンマッチングが行われるBashの場所は?

  15. 15

    複数行のパターンマッチングに基づいて特定の行を結合する必要がある

  16. 16

    この複数行のJavaパターンマッチングが行われないのはなぜですか?

  17. 17

    パターンマッチングのためのR関数

  18. 18

    strsplitパターンマッチングを使用して文字列を複数の列に拡散する

  19. 19

    pom.xmlの複数行にわたるBashパターン一致

  20. 20

    OCamlGADT-パターンマッチングが間違ったタイプの引数に一致する

  21. 21

    1行のデータを複数の行にマッピングするSparkRDD

  22. 22

    Rustで複数のタイプのパターンマッチングを行うことは可能ですか?

  23. 23

    パターンマッチングの代わりにScalaオプションの高階関数

  24. 24

    Spacyでマッチャーに複数のパターンを追加する方法

  25. 25

    パターンマッチングのためにタプルを分解する

  26. 26

    Pythonでの複数行の正規表現パターンのマッチング

  27. 27

    Scalaの複数タイプのパターンマッチング

  28. 28

    Bash - 複数行にわたる複数のコマンド

  29. 29

    マルチプロセッシングのために複数のコマンドを実行するPython

ホットタグ

アーカイブ