【问题标题】:Reinsert delimiters after using awk and sort使用 awk 和排序后重新插入分隔符
【发布时间】:2013-03-14 01:40:35
【问题描述】:

我对脚本非常陌生,如果这是一个非常明显的问题,请原谅我。我正在 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:Sunday:10.00:17.30:志愿者海滩清理
2:24:2013:星期日:20.00:24.00:派对
2:11:2013:Monday:16.00:17.30:看牙医
1:24:2013:Thursday:11.00:11.45:项目会议
3:24:2013:星期日:8.00:11.30:教堂野餐
2:8:2013:Friday: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 2013 星期四 14.00 15.10 CSS 会议
1 25 2013 星期五 12.00 12.30 商务午餐
1 26 2013 周六 16.00 17.30 烧烤

如何取回冒号分隔符?

【问题讨论】:

  • 排序顺序不应该是-k 3n -k 1n -k 2n或类似的吗?

标签: shell sorting awk


【解决方案1】:

最简单的答案是,一开始就不要删除它们。至少对于我的排序版本,它可以与原始文件一样工作:

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

【讨论】:

    【解决方案2】:

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

    这完全符合我的要求

    sort -k 1,1 -k 2,2n -k3,3n -n -t: -o appts.txt appts.txt
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-08
      • 2019-05-23
      • 2013-05-09
      • 1970-01-01
      • 1970-01-01
      • 2012-09-13
      • 2022-01-13
      • 1970-01-01
      相关资源
      最近更新 更多