将星期几添加到文本文件中的日期

时间:2012-12-29 04:39:23

标签: ubuntu text sed

在包含类似行

的文本文件中
%12/29/2012%

如何处理它以便包含星期几?

%12/29/2012 sat%

sed可以做到吗?也许使用seddate

的组合

请注意,并非所有行都是这样的日期,日期是标记。

3 个答案:

答案 0 :(得分:2)

如果您有GNU awk,可以尝试:

awk '(x = mktime(gensub(/%(..)\/(..)\/(....)%/, "\\3 \\1 \\2 0 0 0", ""))) != -1 { print strftime("%%%m/%d/%Y %a%%", x); next }1' file

测试:

file的内容:

%12/29/2012%
wtf
%12/30/2012%

结果:

%12/29/2012 Sat%
wtf
%12/30/2012 Sun%

答案 1 :(得分:1)

cat file | while read a; do date --date=$(echo "$a" | tr -d '%') +"%x %a"; done

然后使用下一个命令添加百分号:

$ sed 's/.*/%&%/' file

编辑:

如果你想跳过不是日期的行,你必须添加if-else语句,例如:

$ cat file | while read a; do if [[ $a == %*% ]]; then date --date=$(echo "$a" | tr -d '%') +"%x %a"; else echo "$a"; fi; done

答案 2 :(得分:1)

perl -MPOSIX -pe 's{%(\d{2})/(\d{2})/(\d{4})%}{strftime "%%%m/%d/%Y %a%%",0,0,0,$2,$1-1,$3-1900}ge' file