awk 处理行列
cat /etc/passwd | cut -d: -f1
cat /etc/passwd | awk -F: '{print $1}'
cat /etc/passwd | awk -F: '{print "username:" $1 "=> uid:" $3 }'
#默认是以空格分隔
cat /etc/passwd | head -5 |awk -F: '{print "username:" $1 "=> uid:" $3 }'
#获取磁盘占有率,NR表示当前行号
df | awk '{if(NR==4){print int($5)}}'
#获取总行数
df | awk 'END{print NR}'
#获取总列数
df | awk 'END{print NF}'
#第一行匹配192.168.100.1的行输出
cat file | awk '$1~/192.168.100.1/{print $0}'
sed 处理行
#显示行号查看文件
nl file
#查看第5行的数据
cat file | sed -n '5'p
#查看3-6行数据
cat file | sed -n '3,6'p
#去掉3-6行
cat test | sed '3,6'd
#查找包含bash的行
cat /etc/passwd | sed -n '/bash/'p
#查找1-包含sync内容的行
cat /etc/passwd | sed -n '1,/sync/'p
#查找包含ssh内容的行到最后一行
cat /etc/passwd | sed -n '/sshd/,$'p
uniq 统计
#统计文件里面紧挨着的相同行出现的次数,统计网站ip访问次数等
uniq -c file
#上面的优化方案
cat file2 | sort | uniq c
#上面的优化方案,-r反排序统计
cat file2 | sort -r | uniq c
#上面的优化方案,-r反排序统计,-k1根据第一列排序,针对多列情况
cat file2 | sort -k1 -r | uniq c
文件分割
#将file2按照每5行分割为一个文件
split -5 file2 spt
统计apache访问记录
cat access.log | awk '{print $1}' | sort | uniq -c