0

我对脚本很陌生,所以如果这是一个非常明显的问题,请原谅我。我正在 Bourne shell 中编写约会跟踪脚本(不幸的是必须使用 Bourne)。我需要按日期顺序对约会进行排序,每个约会由冒号分隔的 7 列组成,如下所示:

1:26:2013:星期六:16.00:17.30:烧烤
1:24:2013:星期四:14.00:15.10:CSS 会议
1:25:2013:星期五:12.00:12.30:商务午餐
1:27:2013:星期日:10.00 :17.30:志愿者海滩清理
2:24:2013:Sunday:20.00:24.00:Party
2:11:2013:Monday:16.00:17.30:牙医拜访
1:24:2013:Thursday:11.00:11.45:项目会议
3:24 :2013:Sunday:8.00:11.30:Church picnic
2:8:2013:Friday:12.00:17.30:Halo 锦标赛
1:19:2013:Saturday:16.00:20.30:Poker

这是我到目前为止所拥有的,它完全符合我的要求,只是它去掉了我的冒号分隔符。awk -F : '{print $1, $2, $3, $4, $5, $6, $7 |"sort -k 1,1 -k 2,2n -k3,3n -n -o appts.txt"}' appts.txt

1 19 2013 星期六 16.00 20.30 扑克
1 24 2013 星期四 11.00 11.45 项目会议
1 24 2013 星期四 14.00 15.10 CSS 会议
1 25 2013 星期五 12.00 12.30 商务午餐
1 2013 年 26 日星期六 16.00 17.30 烧烤

如何取回冒号分隔符?

4

2 回答 2

3

最简单的答案是,首先不要删除它们。至少对于我的排序版本,它可以按预期与原始文件一起工作:

sort -k 1,1 -k 2,2n -k3,3n -n -o appts2.txt < appts.txt

不过,它也支持显式指定字段分隔符 ( -t)。所以为了安全起见,你可以说:

sort -k 1,1 -k 2,2n -k3,3n -n -t: -o appts2.txt < appts.txt
于 2013-03-14T01:51:07.173 回答
2

我很荒谬......不知道为什么我首先使用 awk 。

这做了我想要的很好

sort -k 1,1 -k 2,2n -k3,3n -n -t: -o appts.txt appts.txt
于 2013-03-14T01:50:50.823 回答