我对脚本非常陌生,所以如果这是一个非常明显的问题,请原谅我。我正在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:星期日:20.00:24.00:党
2:11:2013:星期一:16:00-17:30:牙医访问
1:24:2013:周四:11.00:11.45:项目会议
3:24:2013:周日:8.00:11.30:教堂野餐
2:8:2013:周五:12.00:17.30:Halo锦标赛 1:19:2013:星期六:16.00:20.30:扑克
这是我到目前为止所做的事情,它完全符合我的要求,除了它取出我的冒号分隔符。 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日星期四14.00 15.10 CSS会议
1 25 2013年周五12.00 12.30商务午餐
1 26 2013年周六16.00 17.30烧烤
如何让我的冒号分隔符回来?
答案 0 :(得分: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
答案 1 :(得分:2)
我很荒谬......不知道为什么我首先使用awk。
这就是我想要的就好了
sort -k 1,1 -k 2,2n -k3,3n -n -t: -o appts.txt appts.txt