在可以按行处理,而且每行的格式都固定的时候,用各种Unix工具做字符串操作还是比较方便的。下面是这几天用到的一些命令,应该有更高效的方法,不过我只会用每个工具的基本用法。
统计常用的命令
1 2 3 4 5 |
|
每一行的作用:
- 读取~/.bash_history,去掉#开头的时间信息
- 把
|
换成换行,被管道连接的命令也要计算 - 输出每行的第一个字段
- 排序,计算每个命令出现的次数
- 按次数排序
最常用前十个命令和次数:
cd | 852 |
zathura | 562 |
\rm | 558 |
cat | 556 |
ls | 543 |
sudo | 474 |
lsl | 455 |
grep | 334 |
cp | 334 |
opera | 318 |
统计安装的Haskell包
因为以前用cabal-dev分开管理不同的Haskell项目,所以有些包重复安装了在不同的项目里,所以想看一下一共安装那些包。
1 2 3 4 |
|
每一行的作用:
- 找到全部包的信息文件路径
- 得到信息文件名
- 得到包名
- 排序去重
信息文件的文件名的格式是包名-版本-32位哈希.conf
,因为包名里可能有-
,根据-
取第一个字段不一定是完整的包名。但是后面的-32位哈希.conf
的长度是固定的,所以我先用rev反转然后用cut去掉这固定长度的部分,然后再根据-
拿到反转的包名,最后再转回来。
迁移GHC安装位置
直接把文件移动到其他地方还不行,因为包的信息文件里也有路径信息,移动文件后要修改。
1 2 3 4 |
|