次の数千の行があります。
e0f186cf-c34d-42e9-b8a9-9b9cf1f304e7,TotalNumberOfHandledConnectionsOrSessions,TotalNumbe1211008586,1457343000,179.00
最後の列はタイムスタンプです。問題は、それが秒単位でミリ秒単位で必要であることです。
だから、その数を000で埋めたいと思います。
ただし、いつかこの行にミリ秒を含めることができるため、この場合は000を追加しないでください。
私は成功せずにsedを使ってこのサイトのいくつかの例を試しました。
答え1
(GNU)を含むawk
awk 'BEGIN { FS="," ; OFS="," } { if ( length($4)=10 ) { $4=$4"000" ; print $0 } else print $0 }' file
説明する:
BEGIN { FS="," ; OFS="," }
:入力(FS
)および出力(OFS
)フィールド区切り文字を最初にコンマに設定します。- 4列目の長さが10で、0を3つ加えてすべて出力する場合
- それ以外の場合はすべて印刷
答え2
sed 's/,\([0-9]\{10\}\),\([0-9]*\.[0-9]*\)$/,\1000,\2/'
これは次のパターンと一致します。
- 斑点、
- 正確に10桁、
- 斑点、
- いくつかの数字、
- ピリオド(エスケープ済み)、
- いくつかの数字、
- 行末
次に交換してください。
- 斑点、
- 10桁(逆参照基準
\1
)、 - 3つの0、
- 斑点、
- 逆参照として表示される最後のフィールドです
\2
。