(随着积累,文件变大,请用command/control+f 搜索)
tips:
1、对于非连续的重复行,可以先排序(sort),然后再进行uniq去重统计,然后就可以得到每行的数据了。
2、
3、
一、tail
tail -f filename
tail -n num filename
二、uniq sort
#cat a.txt | uniq -c -i | sort -k2 -rn 排重,排重输出的第二列逆序排列
如果单纯地使用sort按行进行排序比较简单,
但是使用sort按多个列值排列,同时使用tab作为分隔符,而且对于某些列需要进行逆序排列,这样sort命令写起来就比较麻烦了
-t $'\t':指定TAB为分隔符
-k 1, 1: 按照第一列的值进行排序,如果只有一个1的话,相当于告诉sort从第一列开始直接到行尾排列
n:代表是数字顺序,默认情况下市字典序,如10<2
r: reverse 逆序排列,默认情况下市正序排列
所以最后的命令:sort -t $’\t’ -k 1n,1 -k 2n,2 -k4rn,4 -k3,3 my-file
三、awk
awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。
awk条件打印
awk '{print $3}'
awk -F":" '{print $2==20? $0: $1}' chen.data
结果为(如果第二条记录为20,则打印全行,否则打印第一个记录)
awk -F":" '$2~/[0-9][0-9]/{print $0}' chen.data
(如果第二个记录前两个是数字,则打印该行。注意这里的~匹配操作符的运用,否则将只是对第一条记录默认匹配)
awk -F":" '{ if($2==20){print $0} else {print $1} } ' chen.data
awk中的for循环awk -F":" '{count=$2/10+1; for(i=0;i<count;i++) { print $0} } ' chen.data (以第二个记录的值除以10再加1,作为一行记录的循环次数)
条件打印:http://blog.csdn.net/chenbingchenbing/article/details/6987559
awk学习:http://blog.chinaunix.net/uid-23302288-id-3785105.html
四、sed
1、zhaorui说过,对行的处理用awk,列相关的处理用sed先记在这
sed简明教程:http://coolshell.cn/articles/9104.html
五、磁盘相关(df、du)
1、df
a:显示全部的档案系统和各分割区的磁盘使用情形
i:显示i -nodes的使用量
k:大小用k来表示 (默认值)
t:显示某一个档案系统的所有分割区磁盘使用量
x:显示不是某一个档案系统的所有分割区磁盘使用量
T:显示每个分割区所属的档案系统名称
常用命令:df -hi
2、du
a:显示全部目录和其次目录下的每个档案所占的磁盘空间
b:大小用bytes来表示 (默认值为k bytes)
c:最后再加上总计 (默认值)
s:只显示各档案大小的总合 (summarize)
x:只计算同属同一个档案系统的档案
L:计算所有的档案大小
常用命令:du -ah