Linux Bash:两个日期均为%b";和日期%";(当然还有)日期“B";给出月份的全名?
我正在Ubuntu服务器12.04中编写一个shell脚本,用来比较日志文件中的一些数据。 在日志文件中,日期的格式为:Linux Bash:两个日期均为%b";和日期%";(当然还有)日期“B";给出月份的全名?,linux,bash,shell,ubuntu-12.04,Linux,Bash,Shell,Ubuntu 12.04,我正在Ubuntu服务器12.04中编写一个shell脚本,用来比较日志文件中的一些数据。 在日志文件中,日期的格式为: [Mon Apr 08 15:02:54 2013] 如您所见,它表示Apr 根据,bash中为此使用的选项是b或h 然而,我(在我的比较脚本中,或直接在shell中)使用b、h或b并不重要。它们都返回了月份的全名 date +"%b" #Returns april (should have returned Apr) date +"%h" #Returns april (
[Mon Apr 08 15:02:54 2013]
如您所见,它表示Apr
根据,bash中为此使用的选项是b或h
然而,我(在我的比较脚本中,或直接在shell中)使用b、h或b并不重要。它们都返回了月份的全名
date +"%b" #Returns april (should have returned Apr)
date +"%h" #Returns april (should have returned Apr)
date +"%B" #Returns april (correct? Should it not be capital A?)
当然,这使得根据日期进行比较非常困难
还有其他人经历过这种情况并找到了解决方案吗
(我不确定这是否相关,但我在安装服务器时选择了挪威语作为安装语言。)
感谢@toro2k的回答,我最终找到了一个可行的解决方案:
DATE=`LC_ALL=C date +%b" "%d" "%H`
(这不起作用:
LC_ALL=C
日期=DATE+%b“%d”%H
)我已经对它进行了测试,问题似乎在于挪威的本地化:
$ LC_ALL=C date +%b
Apr
$ LC_ALL=nn_NO.UTF-8 date +%b
april
因此,当您试图解析日志文件时,应将LC_ALL
环境变量设置为C
,即
LC_ALL=C command
或
有关地区设置的更多信息,请参阅Ubuntu wiki上的页面。redHat install For US/UK提供日期+%b“->4月。您的收获很好:针对挪威语重新安装。也许设置LC*envvars可以解决这个问题?(在此处搜索,您将找到示例和讨论)。祝你好运。@Sheller你说得对。非常感谢。
export LC_ALL=C
# your script code here
export -n LC_ALL