我用下一格式
在我的文件上写日期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
答案 0 :(得分:3)
请尝试以下操作:
grep -E '[[:alpha:]]{3}-[[:alpha:]]{3}-[[:digit:]]{2}-[[:digit:]]{4}' ~/file1
或更简洁
grep -E '\w{3}-\w{3}-[0-9]{2}-[0-9]{4}' ~/file1
答案 1 :(得分:1)
如果您希望明确它并且可以识别区域设置,则可以使用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'|'))"