我用下一种格式在我的文件上写下日期
date +%a-%b-%d-%Y
我的练习目标是获取文件中的日期列表。我知道我需要这样做grep -E
,但我不知道如何正确输入日期的格式。
所需输入:
"grep -E (the format of the dates I'm looking for)" ~/file1
期望的输出:
Tue-Oct-15-2013
Wen-Oct-16-2013
Wen-Oct-16-2013
Thu-Oct-17-2013
尝试以下操作:
grep -E '[[:alpha:]]{3}-[[:alpha:]]{3}-[[:digit:]]{2}-[[:digit:]]{4}' ~/file1
或者更简洁
grep -E '\w{3}-\w{3}-[0-9]{2}-[0-9]{4}' ~/file1
如果您想明确说明它并了解区域设置,您可以使用sh
、date
和grep
这样做coreutils
:
days="($( for i in $(seq 7); do date -d 2013/01/$i +%a; done | paste -sd'|'))"
months="($(for i in $(seq 12); do date -d 2013/$i/01 +%b; done | paste -sd'|'))"
您现在可以像这样 grep 日期格式:
grep -E "${days}-${months}-[0-9]{1,2}-[0-9]{4}" infile
请注意,您似乎使用的是非标准的星期三缩写,如果这不是语言环境变体,则需要将days
行修改为:
days="($(for i in $(seq 7); do date -d 2013/01/$i +%a; done | sed s/Wed/Wen/ | paste -sd'|'))"