ファイルがあります:
pablo tty8 Thu Nov 1 12:51:21 2012 still logged in
(unknown tty8 Thu Nov 1 12:50:57 2012 - Thu Nov 1 12:51:21 2012 (00:00)
pablo tty2 Thu Nov 1 12:50:39 2012 still logged in
pablo tty7 Thu Nov 1 12:49:45 2012 - Thu Nov 1 12:50:56 2012 (00:01)
(unknown tty7 Thu Nov 1 12:34:32 2012 - Thu Nov 1 12:49:45 2012 (00:15)
上記の日付のファイルを一時的に置き換えたいと思います。印刷したい:
pablo tty8 1351770681 still logged in
(unknown tty8 1351770657 - 1351770681 (00:00)
pablo tty2 1351770639 still logged in
pablo tty7 1351770585 - 1351770656 (00:01)
(unknown tty7 1351769672 - 1351770585 (00:15)
私は次のコマンドを試しました。
gawk --posix 'function my()
{"date -d \047"$0"\047 +%s" | getline b;
gsub( /[A-Za-z]{3} [A-Za-z]{3} [0-9] ([0-9]{2}:){2}[0-9]{2} [0-9]{4}/,b );print}
{ my() }' file
上記のコマンドは機能しません。
$ gawk --posix 'function my()
> {"date -d \047"$0"\047 +%s" | getline b;
> gsub( /[A-Za-z]{3} [A-Za-z]{3} [0-9] ([0-9]{2}:){2}[0-9]{2} [0-9]{4}/,b ); print}
> { my() }' ta
date: błędna data: `pablo tty8 Thu Nov 1 12:51:21 2012 still logged in '
pablo tty8 still logged in
(unknown tty8 1351897200 - 1351897200 (00:00)
date: błędna data: `pablo tty2 Thu Nov 1 12:50:39 2012 still logged in '
pablo tty2 1351897200 still logged in
date: błędna data: `pablo tty7 Thu Nov 1 12:49:45 2012 - Thu Nov 1 12:50:56 2012 (00:01) '
pablo tty7 1351897200 - 1351897200 (00:01)
(unknown tty7 1351897200 - 1351897200 (00:15)
上記のコマンドをどのように改善できますか?
ベストアンサー1
これは別の方法です(使用mktime
)。
#!/bin/awk -f
{
split($6,A,":");
S1=sprintf("%d %d %d %d %d %d",$7,$4,$5,A[1],A[2],A[3])
T1=mktime(S1)
if ($8=="-") {
split($12,A,":");
S2=sprintf("%d %d %d %d %d %d",$13,$10,$11,A[1],A[2],A[3])
T2=mktime(S2)
print $1,$2,T1,$8,T2,$14
}
else {
print $1,$2,T1,$8,$9,$10
}
}