博客
关于我
awk根据指定字符串内容排序
阅读量:368 次
发布时间:2019-03-04

本文共 1800 字,大约阅读时间需要 6 分钟。

引言

最近需要对一个MarkDown表格进行排序,关键字段是在第一个的两个|中间,如下

|8| | |Medium|
|5| | |Medium|
|17| | |Medium|
|538| | |Medium|
|1122| | |Easy|
|40| | |Medium|
|3| | |Medium|
|1| | |Easy|
|925| | |Easy|
|7| | |Easy|
|113| | |Medium|
|2| | |Medium|
|9| | |Easy|
|6| | |Medium|
|1370| | |Easy|
|78| | |Medium|
|208| | |Medium|
|1024| | |Medium|
|529| | |Medium|
|39| | |Medium|
|15| | |Medium|
|1291| | |Medium|
|11| | |Medium|
|865| | |Medium|
|16| | |Medium|
|89| | |Medium|
|12| | |Medium|
|14| | |Easy|
|402| | |Medium|
|856| | |Medium|
|19| | |Medium|
|290| | , |Easy|
|389| | |Easy|

解决方法

想到用shell脚本通过awk来进行排序,代码如下:

for i in `awk '{split($1,a,"[\|\|]");print NR,a[2]}' test.txt | sort -n -k2 | awk '{print $1}'`; do awk 'NR=='$i'{print}' test.txt; done

思路就是:

  • 先通过split($1,a,"[\|\|]"分割出test.txt第一列中的关键字段
  • 然后通过print NR,a[2]记录每一列的列号和关键字段
  • 然后对关键字段进行排序sort -nr -k2
  • 其次在外层使用for i infor循环将每一个列号输入到 'NR=='$i'
  • 最后根据'NR=='$i'排序好的列号打印出test.txt每一行数据

结果如下:

|1| | |Easy|
|2| | |Medium|
|3| | |Medium|
|5| | |Medium|
|6| | |Medium|
|7| | |Easy|
|8| | |Medium|
|9| | |Easy|
|11| | |Medium|
|12| | |Medium|
|14| | |Easy|
|15| | |Medium|
|16| | |Medium|
|17| | |Medium|
|19| | |Medium|
|39| | |Medium|
|40| | |Medium|
|78| | |Medium|
|89| | |Medium|
|113| | |Medium|
|208| | |Medium|
|290| | , |Easy|
|389| | |Easy|
|402| | |Medium|
|529| | |Medium|
|538| | |Medium|
|856| | |Medium|
|865| | |Medium|
|925| | |Easy|
|1024| | |Medium|
|1122| | |Easy|
|1291| | |Medium|
|1370| | |Easy|

效果如下:

# Title Solution Difficulty
1 Easy
2 Medium
3 Medium
5 Medium
6 Medium
7 Easy
8 Medium
9 Easy
11 Medium
12 Medium
14 Easy
15 Medium
16 Medium
17 Medium
19 Medium
39 Medium
40 Medium
78 Medium
89 Medium
113 Medium
208 Medium
290 , Easy
389 Easy
402 Medium
529 Medium
538 Medium
856 Medium
865 Medium
925 Easy
1024 Medium
1122 Easy
1291 Medium
1370 Easy

转载地址:http://axrr.baihongyu.com/

你可能感兴趣的文章
mysql 转义字符用法_MySql 转义字符的使用说明
查看>>
mysql 输入密码秒退
查看>>
mysql 递归查找父节点_MySQL递归查询树状表的子节点、父节点具体实现
查看>>
mysql 通过查看mysql 配置参数、状态来优化你的mysql
查看>>
mysql 里对root及普通用户赋权及更改密码的一些命令
查看>>
Mysql 重置自增列的开始序号
查看>>
mysql 锁机制 mvcc_Mysql性能优化-事务、锁和MVCC
查看>>
MySQL 错误
查看>>
mysql 随机数 rand使用
查看>>
MySQL 面试题汇总
查看>>
MySQL 面试,必须掌握的 8 大核心点
查看>>
MySQL 高可用性之keepalived+mysql双主
查看>>
mysql 默认事务隔离级别下锁分析
查看>>
Mysql--逻辑架构
查看>>
MySql-2019-4-21-复习
查看>>
mysql-5.7.18安装
查看>>
MySQL-Buffer的应用
查看>>
mysql-cluster 安装篇(1)---简介
查看>>
mysql-connector-java各种版本下载地址
查看>>
mysql-EXPLAIN
查看>>