命令1:echo "11-FEB-19 06.14.52.352000000 AM" | cut -d' ' -f1,2 | sed 's/\./:/g' |cut -d: -f1-3
命令2:date -d "OUTPUT COMMAND1" +'%s'
预期的 : -echo "11-FEB-19 06.14.52.352000000 AM" | cut -d' ' -f1,2 | sed 's/\./:/g' |cut -d: -f1-3 | date -d "XXX" +'%s'
我需要上一个命令 ( cut -d: -f1-3
) 的输出并将其放入 XXX
答案1
管道cmd1 | cmd2
将第一个命令的输出发送到第二个命令的标准输入。您似乎想要的是将第一个命令的输出放在第二个命令的命令行上。这样做的方法是命令替换: $(command)
。
这会将 的输出放在 的cmd1
命令行上cmd2
:
cmd1 "$(cmd2)"
或者,就你的情况而言:
date -d "$(echo ... |cut)" +%s
答案2
为了便于阅读,我仍然使用多行:
datetime=$( echo "11-FEB-19 06.14.52.352000000 AM" | sed -e 's/\./:/g' -e 's/:[^:]\+$//' )
epoch=$( date -d "$datetime" +%s )
echo "$epoch"