ログファイル内のタイムスタンプ付きの行を検索したい(すべての行にタイムスタンプがあるわけではありません)、タイムスタンプを見ることができるように、などのアクティブな一日数、grepが1つのファイルにマッチした行と別のファイルにマッチした文字列
201 3083560 2013-10-21T13:57:55.334+0200 time|bootup
202 3083560 2013-10-21T13:57:55.334+0200 startup
204 3083579 2013-10-21T13:57:55.353+0200 system|device
205 3083579 2013-10-21T13:57:55.353+0200 system|manufacturer
206 3083579 2013-10-21T13:57:55.353+0200 system|model
私はコマンドを実行できます。
grep -P '\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}[+-]\d{4}\t' usr.log > file1.txt
grep -Po '\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}[+-]\d{4}\t' usr.log > file2.txt
そして、私の質問は、私はいくつかのパイプで必要なものを得るために、一度だけのgrepを実行できますか?パターンは同じにとどまるので、私は30kの個別のユーザーログファイルを持っているので、grepが一度私を保存できると思います。
*パターンの最後にタブを置いておくと便利です。最後の列に時間の値があるため、\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}[+-]\d{4}\n
を除外する必要があります。
*私の環境はCentOS 7、grep(GNU)2.20です。
ありがとうございます!
私は、これは1grep
によって行うことができますが、他の1つはgrepの出力を送信する場合は、一度ファイルを読み取り、
grep
の出力を再利用して逃げることができるとは思わない
をあなたは '直接usr.log'に' grepの-oP'を使用することができ、それを2回実行する必要はありません。 – Inian
正規表現 '\ d {4} - \ d {2} - \ d {2} T \ d {2}:\ d {2} \ d {2} \。\ d {3} [+ - ] \ d {2} \ d {2} \ d {2} \ d {2} \ d {2} \ d {2} [+ - ] \ d {4} \ n'がサンプル入力ファイルの行と一致しません – Inian
ありがとう!私は余分なものを置くのを忘れました:パターンで。今私はそれを修正しました。しかし、どのように1回の実行でそれを行うことができますか?私はfile1.txtも保存したい。 – leoce