日付と時刻のみを削除してください(例:2018-05-09-10.13) 下の文字列から
/pi_nfs/pixin/axpin-zhgahh/was_logs/was_admin_logs/start_WPS.log.05-
09-2018-10.13:ADMU4000I: Server Node_axpin-zhgahh_AppClusterMember stop
completed.
/pm_nfs/pmfin/axpin-zhgahh/was_logs/was_admin_logs/start_WPS.log.05-
09-2018-23.00:ADMU4000I: Server Node_axpin-zhgahh_AppClusterMember stop
completed.
以下の組み合わせを試しましたが返されました。
注文する:
zgrep -i "AppClusterMember stop completed" /pi_nfs/pixin/axpin
zhgahh/was_logs/was_admin_logs/start_WPS.log.05-09-2018*|cut -d '.' -f3
出力:
05-09-2018-10.13:ADMU4000I: Server Node_axpin-zhgahh_AppClusterMember
stop completed
05-09-2018-23.00:ADMU4000I: Server Node_axpin-zhgahh_AppClusterMember
stop completed
予想出力:
05-09-2018-10.13
05-09-2018-23.00
ベストアンサー1
回答
grep -Eo "[0-9]{2}-[0-9]{2}-[0-9]{1,4}-[0-9]{2}\.[0-9]{2}" file
説明する
シンボルマーク:
-E
- 拡張正規表現を使用してください。 (正規表現では、特定の文字をエスケープせずに使用できます。)
-o
- 一致する出力のみを印刷します。
正規表現:
[0-9]
0
- - に数字がある場合は文字と一致します9
。
[0-9]{x}
x
0
- 連続した文字と一致 - 連続した文字が数字の場合9
。
[0-9]{x,y}
x
- 数字の場合は少なくとも連続した文字と一致し0
、9
それ以上の場合は最も多くのy
文字と一致します。
-
特別な意味はなく、grep
正確な文字を一致させようとします-
。
.
これは、正しい文字を表すany character
ためにエスケープを使用する必要があることを意味します。\
.
質問コメントで追加リクエストに答えてください
zgrep -Po "[0-9]{2}-[0-9]{2}-[0-9]{1,4}-[0-9]{2}\.[0-9]{2}(?=.*stop completed\.)" file.gz
説明する
~からzgrep マニュアル:
Zgrepは圧縮またはgzip圧縮ファイルからgrepを呼び出します。
指定されたすべてのオプションはgrepに直接渡されます。
そのため、新しく追加されたフラグと正規表現部分についてのみ説明します。
シンボルマーク:
-P
- Perl正規表現を使用してください。 (プレビューを許可)
正規表現:
(?=.*stop completed\.)
(?=
- 正規表現のうち from to 部分を)
といいますPositive look-ahead
。
この場合、前の正規表現と一致します。ただ行にstop completed.
afterが含まれている場合。