0

ログ ファイルから日付と時刻を解析できるようにしたいと考えています。現在、それらは次の形式になっています。

「02/Jun/2009:14:38:50」ですが、Linuxコマンドラインから利用できるものを使用して、それらを異なる列に分けて、結果の出力が次のようになるようにしたいと思います:

"2009/06/02" "14:38:50"

誰かがこれをどのように行うことができるかについて光を当てることができますか?

よろしく

4

5 に答える 5

3

クリスの答えは、他の形式の行がない場合に最適です。その特定の形式の行にのみ影響を与える必要がある場合は、次のようになります。

cat log | sed -e 's/"\([^:]*\):\([^"]*\)"/"\1" "\2"/'
于 2009-06-02T22:26:40.303 に答える
1

ピュアバッシュ:

while read line ; do echo ${line/:/\" \"}; done < logfile
于 2009-06-04T14:52:05.990 に答える
1

それが各行にあるすべての場合、おそらく:

cat file.txt | sed -e 's/:/" "/'
于 2009-06-02T22:24:48.013 に答える
0

正規表現 "&:&:&:&" を探し、最初のコロンの前後を区切る 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

試すには、biterscripting をダウンロードできます。Google で検索するか、インストール手順についてはhttp://www.biterscripting.comを参照してください。

于 2009-06-15T17:10:41.333 に答える
0

awk の sub() 関数は、置換が成功すると 1 を返すので、次のようになります。

cat file.txt | awk 'sub(/:/,"\" \"")'

GNU awk は gensub() 関数を使用できるため、以下に後方参照のサンプルを示します。

cat file.txt | gawk '$0=gensub(/("[^:]*):([^"]*")/,"\\1\" \"\\2",1)'
于 2009-06-04T14:29:19.453 に答える