2017-08-24 16 views
1

bashを使用したスクリプトの作成。私は特定の日付形式のファイルの行に目を通すしようとしています:特定の日付形式の行を解析しますか?

date +"%a %b %d %T %Z %Y" 

例えばラインが

/foo/bar/foobar this 12 is 411 arbitrary stuff in the line Wed Jun 10 10:10:10 PST 2017 

だったら、私は水曜日6月10日10時10分10秒を取得したいと思いますPST 2017.

特定の日付形式を検索する方法はありますか?

+0

複数の日付部分文字列を含む行はありますか? – RomanPerekhrest

+0

日付は1つだけです。機能的には、スクリプトはファイルの最初の行と最後の行を、関連する日付が唯一の場所になるようにチェックします。しかし、私はもう少し開いていると言いました。 – Racehorse35

答えて

1

このアプローチに同意するかどうかはわかりません。しかし、これがいくつかの素早く非反復的な作業であれば、私はすべてのシナリオに対応できる完璧なソリューションを探すつもりはありません。

まず、あまりにも一般的なパターンを使用して、必要な部分に合わせることができます。

cat file | sed -n 's/.*\(... ... .. ..:..:.. ... ....\).*/\1/p' 

次に、これをさらに強化して、必要に応じてマッチを制限することができます。

など。

cat file | sed -n 's/.*\([a-Z]\{3\} [a-Z]\{3\} [0-3][0-9] [0-2][0-9]:[0-5][0-9]:[0-5][0-9] [A-Z]\{3\} [0-9]\{4\}\).*/\1/p' 

これはまだ完全ではなく、無効な内容と一致する可能性があることに注意してください。それでも十分でないと分かった場合は、必要なポイントまでパターンを微調整することができます。

関連する問題