管道命令 (pipe)
- 管道命令pipe,使用的是 | 这个界定符号.
- 仅能处理由前面一个命令传来的 正确 信息,即standard output,对于standard error 没有直接处理能力.
- 管道命令必须能够接受来自前一个命令的数据成为 standard input 继续处理.
下面为一些管道命令:
选取命令:cut,grep
排序命令:sort,wc,uniq
双向重定向:tee
字符转换命令:tr,col,join,paste,expand
切割命令:split
参数代换:xargs
选取命令 : cut , grep
选取信息通常是针对 行 来分析的,并不是整篇信息.
- cut : 将同一行里面的数据进行分解,
cut -d'分隔字符' -f fields <==用于分隔字符,-f 取出第几段
echo $PATH | cut -d ':' -f 5 //以:作为分隔符,取第5段.
cut -c 字符范围 <==用于排列整齐的信息!
export | cut -c 12- //去除export输出信息第12个字符后的全部字符串.每一行!!! - grep : 分析一行数据,若有想要的信息,将 该行 取出.
grep [-acinv] [--color=auto] '查找字符串' filename
-i:忽略大小写
-v:反向选择,即选出没有'查找字符串'内容的行
last | grep 'root' //将last当中,出现root的行取出
last | grep -v 'root' //将last当中,没有出现root的行取出
last | grep 'root' | cut -d ' ' -f 1 //将last当中,出现root的行取出,并且进取第一列.
排序命令 : sort , wc , uniq
- sort , 排序的字符与语系的编码有关,建议使用 LANG=C 统一语系
sort [-fbMnrtuk] [file or stdin]
-r:反向排序
-t:分隔符,默认[Tab]
-k:以那个区间(field)来进行排序
cat /etc/passwd | sort //默认以第一个数据来排序
cat /etc/passwd | sort -t ':' -k 3 //以:来分隔,且以第三列来排序 - uniq , 排序sort完成后!,使用uniq,重复的数据仅列出一个显示
uniq [-ic]
-i:忽略大小写
-c:进行计数
last | cut -d ' ' -f 1 | sort | uniq
last | cut -d ' ' -f 1 | sort | uniq -c - wc , 显示 行 , 字数 , 字符数
wc [-lwm]
-l:行,-w:多少字(英文单字),-m:多少字符
双向重定向 : tee
tee 会同时将数据流送至 文件 与 屏幕 ,
输出屏幕的,其实就是 stdout , 可以让下一个命令继续处理!
tee [-a] file // -a:累加的方式 append,将数据加入file中.
last | tee last.list | cut -d ' ' -f1
字符转换命令 : tr , col , join , paste , expand
- tr , 可以删除一段信息当中的文字,或者替换
tr [-ds] SET1 ...
-d:删除SET1这个字符串
-s:替换掉重复的字符
last | tr '[a-z]' '[A-Z]' //小写替换成大写
cat /etc/passwd | tr -d ':' //删除输出信息中的冒号 - col ,
col [-xb]
-x:tab转换成对等的空格键
-b:文字内有/,仅保留反斜杠/最后接的那个字符 - join , 将两个文件当中,有相同数据的那一行加在一起.
join [-ti12] file1 file2
注:在join之前,应事前对其sort排序处理 - paste , 将两行贴在一起,且中间以[Tab]键隔开
paste [-d] file1 file2
-d:后面可以接分隔符,默认[Tab] - expand , 将[Tab]键转成空格键
expand [-t] file
-t:后面可以接数字,一般来说一个tab键可以用8个空格键替换
切割命令 : split
- split , 将一个大文件依据文件大小或者行数来切割成为小文件
split [-bl] file PREFIX
-b:后面接切割成的文件大小,可加单位,b,k,m等;
-l:以行数切割
参数代换 : xargs
- xargs , 产生某个命令的参数的意思
xargs [-0epn] command