我正在尝试将日期从一种格式转换为另一种格式:
例如,从“2005年10月29日”到“2005-10-29”。
我有一个包含625个日期的列表。我使用Awk。
转换通常有效,但有时转换根本不会发生, 并且变量(转换后的日期)保持未定义状态。
这总是发生在完全相同的行上。 在那些奇怪行的日期上显式运行“date”(从Bash shell)可以正常工作(日期被正确转换)。 -- 这与那些行的文本内容无关。
为什么会出现这种情况,我该如何修复我的脚本?
这是我的脚本:
如果您想重现这个问题:
1.下载此文件:uBXr0r15.txt。
2.运行Awk脚本。
3.在bug-out-3.txt中搜索“undefined”。(在我的电脑上找到了122次“undefined”)
然后,您可以再次运行脚本,而在我的电脑上,bug-out-3.txt保持不变——完全相同的日期仍然未定义。
(Gawk版本3.1.6,Ubuntu 9.10。)
此致,敬礼,Magnus
转换通常有效,但有时转换根本不会发生, 并且变量(转换后的日期)保持未定义状态。
这总是发生在完全相同的行上。 在那些奇怪行的日期上显式运行“date”(从Bash shell)可以正常工作(日期被正确转换)。 -- 这与那些行的文本内容无关。
为什么会出现这种情况,我该如何修复我的脚本?
这是我的脚本:
awk 'BEGIN { FS = "unused" } {
x = "undefined";
"date \"+%Y-%m-%d\" -d " $1 | getline x ;
print $1 " = " x
}' uBXr0r15.txt \
> bug-out-3.txt
如果您想重现这个问题:
1.下载此文件:uBXr0r15.txt。
2.运行Awk脚本。
3.在bug-out-3.txt中搜索“undefined”。(在我的电脑上找到了122次“undefined”)
然后,您可以再次运行脚本,而在我的电脑上,bug-out-3.txt保持不变——完全相同的日期仍然未定义。
(Gawk版本3.1.6,Ubuntu 9.10。)
此致,敬礼,Magnus
sort' 和
uniq',而且真实的 Awk 脚本有所不同。) - KajMagnus