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

Ubuntu 将星期几添加到文本文件中的日期,ubuntu,text,sed,Ubuntu,Text,Sed,在包含以下行的文本文件中 %12/29/2012% 我如何处理它,使其包括一周中的某一天 %12/29/2012 sat% sed能做到吗?可能结合使用sed和date 请注意,并非所有行都是这样的日期,日期是标记 cat file | while read a; do date --date=$(echo "$a" | tr -d '%') +"%x %a"; done 然后使用下一个命令添加百分号: $ sed 's/.*/%&%/' file 编辑: 如果要跳过非日期的行,

在包含以下行的文本文件中

%12/29/2012%
我如何处理它,使其包括一周中的某一天

%12/29/2012 sat%
sed
能做到吗?可能结合使用
sed
date

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

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
然后使用下一个命令添加百分号:

$ 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

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

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

文件的内容

%12/29/2012%
wtf
%12/30/2012%
结果:

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

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

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

文件的内容

%12/29/2012%
wtf
%12/30/2012%
结果:

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

哎呀,我忘了说不是所有的行都是日期,所以我想读的时候
不起作用?哎呀,我忘了说不是所有的行都是日期,所以我想读的时候
不起作用?