linux – Bash:日期“%b”和日期“%h”(当然还有)日期“%B”给出月份的全名?

linux – Bash:日期“%b”和日期“%h”(当然还有)日期“%B”给出月份的全名?,第1张

概述我正在Ubuntu服务器12.04中编写一个 shell脚本,它应该比较日志文件中的一些数据. 在日志文件中,日期以以下格式给出: [Mon Apr 08 15:02:54 2013] 如你所见,它表明4月 根据man-page,bash中使用的选项是b或h. 然而,我(在我的比较脚本中,或直接在shell中)使用b,h或B无关紧要.它们都返回月份的全名. date +"%b" #Returns 我正在ubuntu服务器12.04中编写一个 shell脚本,它应该比较日志文件中的一些数据.
在日志文件中,日期以以下格式给出:

[Mon Apr 08 15:02:54 2013]

如你所见,它表明4月

根据man-page,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 +%bApr$LC_ALL=nn_NO.UTF-8 date +%bapril

因此,当您尝试解析日志文件时,应将LC_ALL环境变量设置为C,即

LC_ALL=C command

要么

export LC_ALL=C# your script code hereexport -n LC_ALL

有关语言环境设置的更多信息,请参阅Ubuntu wiki上的Locale页面.

总结

以上是内存溢出为你收集整理的linux – Bash:日期“%b”和日期“%h”(当然还有)日期“%B”给出月份的全名?全部内容,希望文章能够帮你解决linux – Bash:日期“%b”和日期“%h”(当然还有)日期“%B”给出月份的全名?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/1018615.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存