如何读取带有 php 或 bash 的文本文件并对其进行排序?

How to read a text file with php or bash and sort it?

我们已经使用 iostat 记录了我们的磁盘阵列,现在有一个 2 MB 的文本文件。 是否可以使用 php 或 bash?

读取文件内容,并以某种方式对所有出现的内容进行排序

我们也有 shell 访问权限,所以如果您是指挥大师,那也是可能的。

我们要读取文本文件中的以下信息并按升序排序 r/sw/skr/skw/sqlensvc_t%b 值。

可能,还是太难了?

                        extended device statistics
device     r/s   w/s    kr/s    kw/s qlen svc_t  %b
da0       11.5  14.0   701.8   530.1    0   7.3  11
                        extended device statistics
device     r/s   w/s    kr/s    kw/s qlen svc_t  %b
da0        0.0   0.0     0.0     0.0    1   0.0   0
                        extended device statistics
device     r/s   w/s    kr/s    kw/s qlen svc_t  %b
da0        0.0  10.5     0.0   350.8    0 139.2 145

尝试对第 3 列 ("w/s") 进行排序:

(echo 'device r/s w/s kr/s kw/s qlen svc_t %b'; grep '[0-9]' file | sed 's/ \+/ /g' | sort -n -k 3,3 ) | column -t

或此对第 7 列 ("svc_t") 进行排序:

(echo 'device r/s w/s kr/s kw/s qlen svc_t %b'; grep '[0-9]' file | sed 's/ \+/ /g' | sort -n -k 7,7 ) | column -t

输出 -k 7,7:

device  r/s   w/s   kr/s   kw/s   qlen  svc_t  %b
da0     0.0   0.0   0.0    0.0    1     0.0    0
da0     11.5  14.0  701.8  530.1  0     7.3    11
da0     0.0   10.5  0.0    350.8  0     139.2  145

使用 awkprintf 可以使列正确对齐。