本文转自http://blog.csdn.net/qq_34092336/article/details/78139589
欢迎大家阅读原文并点赞
cut、sort、wc、sed、awk
1、cut (提取文本列)
echo $PATH | cut -d ':' -f 5 //取$PATH输出流的第五列,是以:为分隔符的第5列
echo $PATH | cut -d ':' -f 1,3 //取第3,5列
echo $PATH | cut -d ':' -f 1-3 //取第1-3列
echo $PATH | cut -d ':' -f 5 - //取5列以后
echo $PATH | cut -d ':' -f 1-3,5 //取1-3和5列
2、sort (对行排序)
cat /etc/passwd | sort: 对/etc/passwd进行排序输出,默认按字符串形式升序
cat /etc/passwd | sort -t ':' -k 3 : 以:为分隔符,按第三列排序
cat /etc/passwd | sort -t ':' -k 3n : 以:为分隔符,按第三列排序,排序按数字大小升序排序
cat /etc/passwd | sort -t ':' -k 3nr : 降序
cat /etc/passwd | sort -t ':' -k 3 -u : -u是去重
cat somefile | sort | uniq : 去重
sort somefile | uniq -c : 去重并统计次数
3、wc
wc -l /etc/passwd : 统计行
wc -w /etc/passwd : 统计单词出现次数
wc -m /etc/passwd : 统计字符数
4、sed (删除)
sed '2d' somefile : 删除第二行,但是不是真的删除
sed -i '2d' somefile : 真的删除
sed '2,$d' somefile : 删除2-最后一行
sed '$d' somefile : 删除最后一行
sed '/test/'d somefile :删除含有test的行
sed 's/from/to/g' somefile : 匹配每一个from,变成to
sed -n 's/^from/to/p' somefile : 匹配以from开头的,打印发生替换的行
sed 's/^from/&to/' testfile : 在from开头的单词后面追加to
5、awk
last -n 5 | awk '{print $1}' : 打印第一列,默认以tab和空格等为分隔符
cat /etc/passwd | awk -F ':' '{print $1}' //以:为分隔符
cat /etc/passwd | awk -F ':' '{print $1"\t"$3}' //输出1,3列,中间分隔
cat /etc/passwd | awk -F ':' 'BEGIN {print "name,shell"} {print $1,$7} END {print "blue,bin"}' //首尾列名
awk -F '/root/' /etc/passwd : 含有root的
awk -F '/^root' /etc/passwd : 以root开头的