GNUawkを使用します。印刷用のタイムスタンプを実際に取得しているフィールドが明確ではないため、入力ファイルを使用したいくつかの例を次に示します。
たったの$1を使う:
$ gawk '{s=mktime(gensub(/-/," ","g",$1" 0 0 0")); print s,s}' file
1352959200 1352959200
1352872800 1352872800
1352872800 1352872800
1352872800 1352872800
$1と$2を使用する:
$ gawk '{s=mktime(gensub(/[-:]/," ","g",$1" "$2)); print s,s}' file
1352997300 1352997300
1352919780 1352919780
1352920380 1352920380
1352920980 1352920980
$ 3以降の使用:
$ gawk '{sub($1" "$2" ","");s=mktime($0); print s,s}' file
1352996520 1352996520
1352919780 1352919780
1352920380 1352920380
1352920980 1352920980
gawkをお持ちでない場合:
$ awk '{ ("date -d \" "$1" \" +%s") | getline s; print s,s}' file
1352959200 1352959200
1352872800 1352872800
1352872800 1352872800
1352872800 1352872800
編集:これにsystem()を使用する方法を更新しました(推奨されません):
次のシェルコマンドラインを使用します。
$ printf "%s %s\n" $(date -d 2012/11/15 +%s) $(date -d 2012/11/15 +%s)
1352959200 1352959200
そしてawkのsystem()からそれを呼び出します:
$ awk '{system( "printf \"%s %s\n\" $(date -d " $1 " +%s) $(date -d " $1 " +%s)" )}' file
1352959200 1352959200
1352872800 1352872800
1352872800 1352872800
1352872800 1352872800