0

次のコードがあるとします。

for u in `cat /tmp/expiring` ; do
  /var/tmp/pwx $u egrep [12345] >> /tmp/reallyexpiring
done

/tmp/expiring からの for ループへの入力は次のようになります。

bjones password good 25 to expire
rsmith password good 3 to expire

/tmp/expiring には複数の行があり、すべてにアカウントの有効期限が切れるまでの日数に関するレポートと、1 行に 1 人のユーザーが含まれます。

スクリプトの後半で mailx コマンドが呼び出されて電子メールが送信されますが、パスワードの有効期限が 1 ~ 7 日で期限切れになるユーザーにのみ送信されます。

問題は、grep ステートメントが 25 日と 7 日のしきい値を超える他の値に一致することです。

1 2 3 4 5 6 7 の離散値だけに一致するようにスクリプトを変更する方法についてのアイデアはありますか? たとえば、25 は 25 が 2 であるため一致します。

4

1 に答える 1

1

番号の前後にスペース (または別の固定文字) があることが確実な場合は、次のことができます。

grep " [1-7] "

あなたの場合、

/var/tmp/pwx $u grep " [1-7] " >> /tmp/reallyexpiring

テスト

$ cat a
this is 2 and
this is 23 ho
but this is 8
and this 7 is seven

$ grep " [0-7] " a
this is 2 and
and this 7 is seven
于 2013-10-18T13:12:57.190 に答える