抽取行
sed -n 'n1,n2p' file //抽取文件faile中的行n1~n2之间的内容,包括n1,n2;
head -n 10 file //取file前10行
tail -n 10 file //取file后10行
awk '$4~abc' fiel //取文件中第4列是abc那行
抽取列
cut -fx -dy 文件 //以y作为分隔符,抽取第x列
awk -Fy '{print $x}' 文件 //以y作为分隔符,抽取第x列
注:awk可以抽取多列,在指令中使用逗号分割,例:
awk -F: '{print $3,$5}' /etc/passwd
将会抽取文件中的第3列和第5列
又或者awk '{print $3,'/n','/t'} file'回车显示第3列更直观,注意是print而非printf
排序
sort -ty +xn 文件 //以y作为分隔符,以第1+x列为基准排序
注:如果使用了该指令,则不能在同一语句内使用其它参数,如有需要,只能在管道中再sort一次,如: sort +4n /etc/fstab | sort -r
其它参数: n 对数字排序
d 对字母排序
M 对月份排序(诸如JAN,FEB....DEC之类)
r 逆向
tac file //把file文件颠倒行序,例第一行显示为最后一行
把文件反向:
rev file //把file文件内容方向,例如编辑DNS反向区域时可以用到
追加文件的方式:
行对行叠加:paste file1 file2 > file3
文件直接追加:cat file2 >>file1
1、取出两个文件的并集(重复的行只保留一份)
cat file1 file2 | sort | uniq
2、取出两个文件的交集(只留下两个文件中同时存在的字段)
cat file1 file2 | sort | uniq -d
3、删除交集,留下其它的行
cat file1 file2 | sort | uniq -u