我想修改以下语句来提取月份,以及日期:
testdate = $(日期-d"2天"+%d | sed's/0([1-9])/\1 /')
现在它只提取一天......
我目前正在谷歌搜索sed是如何工作的.看起来像是正在使用的各种各样的正则表达式但是......我想我会在论坛上查看一下.
谢谢.
编辑1
我现在有:
testdate=$(date -d "2 days" "+%b %_d %Y")
Run Code Online (Sandbox Code Playgroud)
这很好......除非当天的前导零被剥离.然后我在月和日之间有两个空格,例如2014年4月29日,我得到:
Apr 29 2014
Run Code Online (Sandbox Code Playgroud)
这很棒.但是对于2014年5月1日,我得到:
May 1, 2014
Run Code Online (Sandbox Code Playgroud)
"May"和"1"之间有一个双重空格.我想我可以分两步完成...通过执行date命令,然后sed查找并替换double空格.只是想知道是否有办法在一个命令中完成所有操作.谢谢.
date接受FORMAT应该在这里使用的arg.sed没有必要:
date +%d.%m.
Run Code Online (Sandbox Code Playgroud)
输出:
03.04.
Run Code Online (Sandbox Code Playgroud)
欧洲时间格式.如果你想打印月份的名字使用
date +'%d. %B'
Run Code Online (Sandbox Code Playgroud)
输出:
03. April
Run Code Online (Sandbox Code Playgroud)
将月份和日期读入 shell 变量(假设是 bash/ksh/zsh)
read month day < <(date -d "2 days" "+%m %d")
Run Code Online (Sandbox Code Playgroud)
如果您计划对这些值进行算术运算,请使用将被视为八进制但无效的八进制数的数字08和09. 如果您想去掉前导零,请使用"+%_m %_d"
使用read,shell 会为您处理多余的空格:
read mon day year < <(date -d "2 days" "+%b %_d %Y")
testdate="$mon $day $year"
Run Code Online (Sandbox Code Playgroud)
如果您不想使用临时变量:
testdate="Apr 5 2014" # $(date -d "2 days" "+%b %_d %Y")
testdate=${testdate// / } # globally replace 2 spaces with 1 space
echo "$testdate"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13717 次 |
| 最近记录: |