我想修改以下语句以提取月份和日期:
现在只提取一天...
我目前正在搜索sed的工作原理。看起来像正在使用的各种正则表达式,但是...我想我可以肯定一下一下论坛。
谢谢。
编辑1
我现在有:
testdate=$(date -d "2 days" "+%b %_d %Y")
很棒...除了去除当天的前导零。然后我在月和日之间有两个空格
例如,2014年4月29日,我得到:
Apr 29 2014
太好了但是对于2014年5月1日,我得到:
May 1, 2014
在“五月”和“1”之间有一个双倍空格。我想我可以分两步来做...通过执行date命令,然后使用sed查找和替换 double 空格。
只是想知道是否有一种方法可以在一个命令中完成所有操作。
谢谢。
最佳答案
将月份和日期读入shell变量(假设bash/ksh/zsh)
read month day < <(date -d "2 days" "+%m %d")
如果您打算对这些值进行算术运算,则应为将被视为八进制但无效的八进制数字
08
和09
的数字。如果要去除前导零,请使用"+%_m %_d"
使用
read
,shell为您处理多余的空格:read mon day year < <(date -d "2 days" "+%b %_d %Y")
testdate="$mon $day $year"
如果您不想使用临时变量:
testdate="Apr 5 2014" # $(date -d "2 days" "+%b %_d %Y")
testdate=${testdate// / } # globally replace 2 spaces with 1 space
echo "$testdate"