ログファイルから日付と時刻を解析できるようにしたいと考えています。現在は次の形式になっています:UNIXのログファイル出力で行を分割する方法
「02/Jun/2009:14:38:50」ですが、linuxコマンドラインから入手可能なものを使用して異なるカラムでそれらを区切りたいと思います。次のようになります。
「02/6月/ 2009」「午後二時38分50秒」
誰かがこれを行うことができる方法についてのいくつかの光を当てるしてくださいだろうか?
よろしく
ログファイルから日付と時刻を解析できるようにしたいと考えています。現在は次の形式になっています:UNIXのログファイル出力で行を分割する方法
「02/Jun/2009:14:38:50」ですが、linuxコマンドラインから入手可能なものを使用して異なるカラムでそれらを区切りたいと思います。次のようになります。
「02/6月/ 2009」「午後二時38分50秒」
誰かがこれを行うことができる方法についてのいくつかの光を当てるしてくださいだろうか?
よろしく
クリスの答えは最高です。あなただけが特定の形式でラインに影響を与えるために必要がある場合は、ここでは何か:AWKの
cat log | sed -e 's/"\([^:]*\):\([^"]*\)"/"\1" "\2"/'
それはすべてのことが、各ライン上にあるなら、多分:他のフォーマットとは行が存在しない場合
cat file.txt | sed -e 's/:/" "/'
これは、最初の:のみを(意図的に)その文字列で置き換えることに注意してください。また、その出力を元のファイルにリダイレクトしないでください。そうしないと、空のファイルになります。 –
サブ()関数は1を返しますが、置換が成功した場合、その:
cat file.txt | awk 'sub(/:/,"\" \"")'
GNU awkは(gensubを使用することができます)関数なので、これは以下のバックリファレンスのサンプルです。
cat file.txt | gawk '$0=gensub(/("[^:]*):([^"]*")/,"\\1\" \"\\2",1)'
ピュアバッシュ:と最初のコロンの前と後に分け、正規表現 ":&:& & &" を探すために
while read line ; do echo ${line/:/\" \"}; done < logfile
biterscript。 (&は任意の数の任意の文字を意味します)。
var str log
cat "logfile" > $log
while ({ sen -r "^&:&:&:&^" $log } > 0)
do
var str datetime, date, time
stex -r "^&:&:&:&^" $log > $datetime
stex -p "]^:^" $datetime > $date # String before the first : is date.
stex -p "^:^[" $datetime > $time # String after the first : is time.
echo $date "\t" $time
done
試しには、ビットスクリプトをダウンロードできます。 Google上にインストールするか、インストール手順はhttp://www.biterscripting.comにあります。
これは完璧に働いた、ありがとう! – JDR
'cat'の役に立たない使用:' sed -e '...'