ゲームの前に単語を見つける方法

ゲームの前に単語を見つける方法

次のログファイルがあります。シェルスクリプトを使用して、エラー/疑わしい状況があるかどうかを知る必要があります。

エラーを見つけて前の単語を確認する必要があります。 0より大きい場合、DBAは操作を実行しました。

Checking pubs2: Logical pagesize is 4096 bytes
DBCC CHECKSTORAGE for database 'pubs2' sequence 17 completed at Oct 21 2015  3:17PM. 4 faults and 0 suspect conditions were located. 0 checks were aborted. You should investigate the recorded faults, and plan a course of action that will correct them.

Linux/Bash シェルで次のコマンドを試しましたが、正常に動作します。

FLTCNT=`cat $MAILLOG | grep -oP '\S+(?=\s+faults and)'`
SPTCNT=`cat $MAILLOG | grep -oP '\S+(?=\s+suspect)'`

if [ $FLTCNT -gt 0 ] || [ $SPTCNT -gt 0 ] ; then
    FAILED="Y"
#   echo "Fault / suspect conditions found"
    cat $MAILLOG >> $ERRLOG
fi

ただし、AIXサーバーで同じ操作を実行するとエラーが発生します。

grep: illegal option -- o
grep: illegal option -- P
usage: grep [-r] [-R] [-H] [-L] [-E|-F] [-c|-l|-q] [-insvxbhwyu] [-p[parasep]] -e pattern_list...
    [-f pattern_file...] [file...]
usage: grep [-E|-F] [-c|-l|-q] [-insvxbhwyu] [-p[parasep]] [-e pattern_list...]
    -f pattern_file... [file...]

ベストアンサー1

2つの文字列のいずれかが正の整数値でX faultsファイルに存在し、等しくない場合は操作を実行するとします。Y suspectXY0$MAILLOG

if grep -qwE '([1-9]|[0-9]{2,}) (faults|suspect)' "$MAILLOG"; then
    # do something
fi

このパターンは、([1-9]|[0-9]{2,})ゼロより大きい単一の数字または2桁以上の数字と一致します。

パターンは(faults|suspect)文字列faultsORと一致しますsuspect。そこに含めたい場合はchecks、を使用してください(faults|suspect|checks)

-qgrepユーティリティが生成するエラーではなく出力をオフにするオプション(私たちは終了ステータス、grepつまりパターンと一致できるかどうかに興味があります)。

この-wオプションを使用すると、grep「単語検索」が実行されます。この場合、ゼロは新しい「単語」を開始しませんが、新しい「単語」を開始するため、部分10 faults文字列ではなく検索を意味します。これはまた、この文字列が(可能性は低いが)一致をトリガーしないことを意味します。0 faults1012 faultsmen

alternating()を使用した拡張正規表現の-Eサポートが必要です。|

おすすめ記事