2

値を持つすべての vmstat 行に日時を挿入する必要があります。

次のような関数を作成できます。

function insert_datetime {
  while read line
  do
    printf "$line"
    date '+ %m-%d-%Y %H:%M:%S'
  done
}

次に、次のように vmstat を呼び出します。

'vmstat 3 5 | insert_datetime'

ただし、この行は、ダッシュ (--) およびテキストを含む行を含むすべての行に日時を配置します。ダッシュとテキストを含む行を除外するにはどうすればよいですか?

kthr    memory              page              faults              cpu 04-23-2013 10:19:49
----- ----------- ------------------------ ------------ ----------------------- 04-23-2013 10:19:49
r  b   avm   fre  re  pi  po  fr   sr  cy  in   sy  cs us sy id wa    pc    ec 04-23-2013 10:19:49
0  0 45688088 4094129   0   0   0   0    0   0  45 12172 2840  1  1 99  0  0.35   2.2 04-23-2013 10:19:49
2  0 45694135 4088082   0   0   0   0    0   0 451 56350 21818  3  1 97  0  0.73   4.5 04-23-2013 10:19:52
1  0 45694137 4088061   0   0   0   0    0   0 303 24568 951  3  1 96  0  0.82   5.1 04-23-2013 10:19:55
1  0 45694138 4087739   0   0   0   0    0   0 445 9170 1504  2  0 98  0  0.64   4.0 04-23-2013 10:19:58
4  0 45703145 4078732   0   0   0   0    0   0 335 47175 1306  4  1 95  0  1.01   6.3 04-23-2013 10:20:01

私はこのように見える必要がありました:

kthr    memory              page              faults              cpu
----- ----------- ------------------------ ------------ ----------------------- 
r  b   avm   fre  re  pi  po  fr   sr  cy  in   sy  cs us sy id wa    pc    ec 
0  0 45688088 4094129   0   0   0   0    0   0  45 12172 2840  1  1 99  0  0.35   2.2 04-23-2013 10:19:49
2  0 45694135 4088082   0   0   0   0    0   0 451 56350 21818  3  1 97  0  0.73   4.5 04-23-2013 10:19:52
1  0 45694137 4088061   0   0   0   0    0   0 303 24568 951  3  1 96  0  0.82   5.1 04-23-2013 10:19:55
1  0 45694138 4087739   0   0   0   0    0   0 445 9170 1504  2  0 98  0  0.64   4.0 04-23-2013 10:19:58
4  0 45703145 4078732   0   0   0   0    0   0 335 47175 1306  4  1 95  0  1.01   6.3 04-23-2013 10:20:01
4

4 に答える 4

2

使用awk:

vmstat 3 5 | awk '/^ *[0-9]/{$0=$0 " " strftime("%m-%d-%Y %T")};1'
于 2013-04-23T14:47:36.767 に答える