/var/log/maillogに表示されるキュー番号で一括メールを一覧表示する簡単なスクリプトを作成します。私はこれから始めます:
[root@ditirdlns01 ~]# lsMails(){ grep -i "[email protected]" /var/log/maillog | cut -f1-2,4 -d: ;}
[root@ditirdlns01 ~]#
出力:
[root@ditirdlns01 ~]# lsMails systems
Jul 1 15:12: AF649479A
Jul 1 15:14: 024682F59
Jul 1 15:14: 067A447B9
Jul 1 15:14: 0A3EA479A
Jul 1 15:14: 0DCBE5010
Jul 1 15:21: 97DAB2F59
Jul 1 15:24: D1D9B2F59
完全に大丈夫です。 2番目のコロンを削除したいだけです(明らかにログのコロンは分と秒を区別することです)。実際には、ユーザーが2番目のコロンを見たくないので、これを切り捨てます。私にとっては非常に効果的です。) sedを介してパイピングを試みて、前に数字とスペースがあるコロンを見つけましたが、以前と同じ結果を得ました。
[root@ditirdlns01 ~]# lsMails(){ grep -i "[email protected]" /var/log/maillog | cut -f1-2,4 -d: | sed 's/([0-9]):\s+/ /g';}
[root@ditirdlns01 ~]# lsMails systems
Jul 1 15:12: AF649479A
Jul 1 15:14: 024682F59
Jul 1 15:14: 067A447B9
Jul 1 15:14: 0A3EA479A
Jul 1 15:14: 0DCBE5010
Jul 1 15:21: 97DAB2F59
Jul 1 15:24: D1D9B2F59
私の具体的な質問は次のとおりです。([0-9])
数字を一致させ、結果に含めないのはなぜですか?
ベストアンサー1
特定の質問に回答するには、sed グループキャプチャエスケープされた括弧が必要です。繰り返される文字も+
エスケープする必要があります。
sed
コマンドパイプラインの一部を次に置き換えると機能します。
sed 's/\([0-9]\):\s\+/\1 /g'