linux 管线命令
Mar 27, 2016
如果你想要得到的数据要经过很多道工序才能得出,那么就得用上管线命令了(pipe),管线命令使用的是 | 这个符号。
管线命令只能处理前面一个指令传来的正确信息,也就是standard output信息,不能处理standard error信息。
每个管线后面接的第一个数据必须是指令,并且是能接受标准输入的指令,只有这样才能称为管线命令。
常用的管线命令有:
撷取命令: cut, grep
排序命令: sort, wc, uniq
双向重导向: tee
字符转换命令: tr, col, join, paste, expand
分割命令: split
参数代换: xargs
撷取命令: cut, grep
cut是撷取一行的某段,grep是撷取符合条件的那些行。
cut -d'分隔字符' -f fields
cut -c 字符区间
示例代码
echo $PATH | cut -d':' -f5 取出用冒号分隔后的第5段
export | cut -c 12- 取出第12个字符以后的内容
last | cut -d'' -f1 取出空白符分割的第一段
grep语法
grep [-acinv] [--color=auto] '搜寻字符串' filename
last | grep 'root' 将last当中,取出有root的那一行
last | grep -v 'root' 取出没有root的那一行
last | grep 'root' | cut -d'' -f1 取出root后,仅取第一栏
排序命令: sort, wc, uniq
sort语法:
sort [-fbMnrtuk] [file or stdin]
f :忽略大小写的差异,例如 A 与 a 视为编码相同;
-b :忽略最前面的空格符部分;
-M :以月份的名字来排序,例如 JAN, DEC 等等的排序方法;
-n :使用『纯数字』进行排序(默认是以文字型态来排序的);
-r :反向排序;
-u :就是 uniq ,相同的数据中,仅出现一行代表;
-t :分隔符,预设是用 [tab] 键来分隔,类似于cut命令的-d选项;
-k :以那个区间 (field) 来进行排序的意思,类似于cut命令的-f选项
示例代码
cat /etc/passwd | sort -t':' -k3
cat /etc/passwd | sort -t ':' -k 3 -n 以数字来排序
uniq语法
uniq [-ic]
-i :忽略大小写字符的不同;
-c :进行计数
示例代码
last | cut -d'' -f1 | sort | uniq
last | cut -d'' -f1 | sort | uniq -c 列出每个人的登陆总数
wc语法
wc [-lwm]
-l :仅列出行;
-w :仅列出多少字(英文单字);
-m :多少字符;
示例代码
cat /etc/man.config | wc
last | grep [a-zA-Z] | grep -v 'wtmp' | wc -l grep取出last中非空白行,及去除wtmp的那一行,然后统计行数,就可以了解登陆系统的总人数