これらのコマンドが異なる出力を生成するのはなぜですか?

これらのコマンドが異なる出力を生成するのはなぜですか?

テキスト行からLinuxタイムスタンプを取得しようとしています。コマンドを使用してcut文字列をキャッチできます

> echo '"tester_row_____",0,"2016-07-04T01:42:28Z","2016-07-04T02:00:58Z"' | cut -c 22-41
2016-07-04T01:42:28Z

日付を呼び出すときにその日付文字列を直接使用すると、Linuxタイムスタンプを取得できます。

> date +"%s" --date 2016-07-04T01:42:28Z
1467596548

ただし、コマンドの結果をコマンドにパイプすると、他の結果が表示されますcutdate

> echo '"tester_row_____",0,"2016-07-04T01:42:28Z","2016-07-04T02:00:58Z"' | cut -c 22-41 | date +"%s" --date -
1467590400

結果が異なる理由は何ですか?

答え1

date --date -標準入力を許可しません。date +"%s" --date "$(echo '"tester_row_____",0,"2016-07-04T01:42:28Z","2016-07-04T02:00:58Z"' | cut -c 22-41)"これを試してみてください。これは、サブシェルで文字列操作パイプを実行し、その出力をdate

関連情報