2番目のコロンを削除します。

2番目のコロンを削除します。

/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'

おすすめ記事