在我们的C ++类中,第一个模块是关于bash编程的。我们的教练经常混合shisms和bashisms以及csh兼容性主义,最近使用awk和bash的例子来获得本月的最后一个星期五。他用bash脚本和awk解析cal
。
用bash解析这些数据并且awk被认为是不好的做法?最好的方法是使用Unix时间戳进行数学运算吗?
答案 0 :(得分:4)
我想说这是Unix强大的一个很好的例子。获取cal的输出并处理它以获得您感兴趣的信息.Awk可能是这项工作的最佳工具,而cal的使用在我的选择中很聪明:
所以拿出输出:
$ cal
May 2013
Su Mo Tu We Th Fr Sa
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
我们知道星期五的日期将在第六列,但不是每一行都有第六列。所以我们想要第六列中最后一个没有空条目的值。用awk我会这样做:
$ cal | awk '$6{date=$6}END{print date}'
31
所以我们知道本月的最后一个星期五是31 st 。
真正奇怪的是,为什么在你的C ++课程中你不学习C ++?
答案 1 :(得分:1)
“最好”非常相对。
在现实世界中,您希望做一些清晰且可维护的事情,并且使用Unix时间戳可能会也可能不会,这取决于程序的更大背景。也许不同的系统正在消耗不想了解Unix时间戳的结果。
对于你的大学课程,重点是学习一些东西,所以“最好”是完全不同的东西。学校并不总是关于最快的解决方案;有时你会走弯路去接触你正在学习的景观。在这种情况下,使用bash和awk进行解析可能是最好的,因为它会向您展示bash和awk脚本。 Lemme告诉你,当橡胶上路时,Unix时间戳不能解决你所有的字符串处理问题。
(删除了关于你问题含糊不清的说明。)