[英]Extract month and day from linux “date” command
我想修改以下语句来提取月份,以及日期:
testdate = $(日期-d“2天”+%d | sed's / 0([1-9])/ \\ 1 /')
现在它只提取一天......
我目前正在谷歌搜索sed是如何工作的。 看起来像是正在使用的各种各样的正则表达式但是......我想我会在论坛上查看一下。
谢谢。
编辑1
我现在有:
testdate=$(date -d "2 days" "+%b %_d %Y")
这很好......除非当天的前导零被剥离。 然后我在月和日之间有两个空格,例如2014年4月29日,我得到:
Apr 29 2014
这很棒。 但是对于2014年5月1日,我得到:
May 1, 2014
“May”和“1”之间有一个双重空格。 我想我可以分两步完成...通过执行date命令,然后sed查找并替换double空格。 只是想知道是否有办法在一个命令中完成所有操作。 谢谢。
date
接受一个应该在这里使用的FORMAT
arg。 sed
没有必要:
date +%d.%m.
输出:
03.04.
欧洲时间格式。 如果你想打印月份的名字使用
date +'%d. %B'
输出:
03. April
将月份和日期读入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"
对于日期格式, %d
将仅打印日期。 除非您在格式中指定,否则不可能提取月份。
指定获取月份的格式。
%b locale's abbreviated month name (e.g., Jan)
%B locale's full month name (e.g., January)
%m month (01..12)
例如:
$ date -d "2 days" +%d/%b
05/Apr
$ date -d "2 days" +%d/%B
05/April
$ date -d "2 days" +%d/%m
05/04
似乎有一种更简单的方法从[linux]“date”命令中提取[月]和日,然后是所有以前的答案。
来自$ date --help
:
By default, date pads numeric fields with zeroes.
The following optional flags may follow `%':
- (hyphen) do not pad the field
这给了我们以下,没有使用sed
或read
来删除任何类型的填充:
testdate=$(date -d "3 days" "+%b %-d %Y")
days
调整,显示个位数的日数,从今天的日期)
并输出如下:
$ echo $testdate
Sep 1 2014
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.