Linux-2018-spring-5-29
Liying(讨论 | 贡献)2018年5月29日 (二) 05:57的版本 (创建页面,内容为“一、复习 1、管道 pipeline 2、举例操作: ls 2000→/*.txt | wc -l cat 2000/:*.txt | egrep -o '^[0-9-]+' | sort | uniq :-o只输出匹配上的内...”)
一、复习 1、管道 pipeline
2、举例操作:
ls 2000/*/*.txt | wc -l cat 2000/*/*.txt | egrep -o '^[0-9-]+' | sort | uniq :-o只输出匹配上的内容 cat 2000/*/*.txt | egrep -o '^[0-9-]+' > unsorted cat 2000/*/*.txt | egrep -o '^[0-9-]+' | sort > sorted date; cat 2000/*/*.txt | egrep -o '^[0-9-]+' > /dev/null; date
二、新内容
- diff
1、可以大文件,文本文件,没有排序; 2、d:删除(删除第一个文件);a:增加(把第二个文件的内容增加到第一个文件);c:替换
diff sorted sorted_uniq:把第一文件做修改变成第二个文件 diff sorted sorted_uniq | nl | less
- 过滤器 filter
1、什么样的命令是过滤器?能用在管道中 | cmd |
2、什么样的命令可以| cmd |? cmd 对stdin文本按行处理,结果输出到stdout中。
cat 2000/*/*.txt | egrep -o '^[0-9-]+' | sort > sorted :egrep 就是一个filter
3、egrep ,sort :过滤器不是说一定要(而是能)从stdin到stdout。diff,cp不是过滤器。
4、大部分linux命令的特点:过滤器不是说一定要(而是能)从stdin到stdout。
1)如果没有argument,默认从stdin中读
2)输出到stdout中
- sort
sort score.txt:跳过空格按数字排序 sort -k 3 score.txt:根据第三列排序 sort -n -k 3 score.txt sort -r -n -k 3 score.txt sort -r -n -u -k 3 score.txt:倒序 sort -n -u -k 3 score.txt:排序的内容相同就删除 sort -n -u -k 3 score.txt | uniq:一行完全一样才会删除
- egrep
-o 抽取匹配内容 -n 显示行号 -v 取反 -i大小写不敏感 -r/-R/--recurisive dir必须给定文件夹参数 egrep -r .
- tr 是过滤器命令
tr 'a-z' 'A-Z':把小写换成大写
- 思考题:从当前文件夹中,所有(递归)包含3个连续数字的txt文件中,egrep -o '^[0-9-]+' |wc -l
find . -name '*[0-9][0-9][0-9]*.txt' | less
find . -name '*[0-9][0-9][0-9]*.txt' | xargs egrep -o '^[0-9-]+' |wc -l:将find的输出作为参数
find . -name '*[0-9][0-9][0-9]*.txt' | xargs cat | egrep -o '^[0-9-]+' |wc -l
cat `find . -name '*[0-9][0-9][0-9]*.txt'` | less :嵌套命令“~”下面的字符。