1 Pipe管道:|
1 什么时候用:
有些数据要经过多次处理,才能最终得到想要的格式。
2 A | B
B来处理A传过来的信息、数据。
注意:Pipe管道只能处理标准输出,无法处理错误输出。
如果想要pipe处理错误输出,那么可以2>&1,让1的标准输出和2的错误输出都进行处理。
2 常用命令:cut、grep
注意:一般是一行一行来分析。
1 cut:从一行中,取出我们想要的字段
1 特定分隔字符: -d '字符' -f '第几个'
需求 | 快捷键 |
---|---|
对PATH变量,用冒号分隔,取出第五个路径。 | format: cut -d '分隔字符' -f <第i个元素> echo ${PATH} | cut -d ':' -f 5 |
对PATH变量,用冒号分隔,取出第三个和第五个路径。 | echo ${PATH} | cut -d ':' -f 3,5 |
2 想取到特定位置的字符: -c startChar-endChar
2 grep:分析一行数据,如果有我们需要的关键字信息,就显示出整行
grep [-acinv] [--color=auto] '查找字符' fileName
解释:
-a:将二进制以文本形式查找
-c: 计算该字符一共找到基础
-i:忽略大小写
-n:输出行号
-v:反向选择,也就是说找出没有关键字的那一行。
需求 | 快捷键 |
---|---|
找到last中有root的那一行 | last | grep 'root' |
找到last中有root的那一行的第一列数据 | last | grep 'root' | cut -d ' ' -f 1 |
找到last中没有root的那一行 | last | grep -v 'root' |
3 排序命令:sort/wc/uniq
1 sort
sort [-fbMnrtuk] [file or stdin]
解释:
-f: 忽略大小写
-b:忽略最前面的空格
-M: 以月份来排序
-n: 使用纯数字排序
-r: 反向排序
-t: 分隔符号,默认是Tab
-u: uniq,相同的数据显示一条
-k: 以哪个区间的字段来进行排序
需求 | 快捷键 |
---|---|
cat /etc/passwd以:来分隔,想以第三栏来排序 | cat /etc/passwd | sort -t ':' -k 3 |
2 uniq:排序完后,想把重复的数据只显示一遍
uniq [-ic]
解释:
-i: 忽略大小写
-c: 进行计数
3 wc 统计某文件有多少行?多少字?多少字符?
wc [-lwm]
解释:
-l: 显示有多少行
-w: 显示多少字
-m: 多少字符
4 划分:split P357
目标:把一个大文件,按照尺寸或行数,分成多个小文件。
Format: split -bl file newFilePrefix
解释:-b就是按照大小来分;-l按照行数来分
需求 | 快捷键 |
---|---|
把一个600k的文件分成多个子文件,每个300k | split -b 300k originalFile seperate 执行完结果,检查:ll -k seperate** 会生成3个文件,分别叫: seperateaa, seperateab, seperateac |
把上一步生成的3个小文件合并成一个大文件 | Clue: 用数据流重定向 cat seperate** >> originalBack |
每n行记录放到一个子文件里,比如把ls -al的结果,每十行放到一个文件里。 | ls -al | split -l 10 - seperateLine 注意: 要加- 如果需要stdout、stdin,但又没文件时,要加-,那么这个-就会被当成stdin或stdout |