我正在尝试将日期从一种格式转换为另一种格式:例如从“2005 年 10 月 29 日”到 2005-10-29。我有一个包含 625 个日期的列表。我使用 awk。
转换工作 - 大多数时候。然而,有时转换根本不会发生,并且应该保存(转换后的)日期的变量仍未定义。
这总是发生在完全相同的行上。在那些奇怪的行的日期上显式地(从 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
如果要重现此问题:
- 下载此文件:uBXr0r15.txt。
- 运行 awk 脚本。
- 在 bug-out-3.txt 中搜索“未定义”。
(“未定义”在我的电脑上找到了 122 次。)
然后您可以再次运行该脚本,并且(在我的计算机上)bug-out-3.txt 保持不变——完全相同的日期未定义。
(Gawk 版本 3.1.6,Ubuntu 9.10。)
亲切的问候,马格努斯