查看“Linux-2020-spring-4-29”的源代码
←
Linux-2020-spring-4-29
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看和复制此页面的源代码。
== 复习 == === 管道 pipeline === 2000年人民日报语料的处理过程为例 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 # 两个date之间,就可以看出来这个命令的执行之间,7秒钟,为什么这么慢,是因为数据很大,每一行都很长。正则表达式效率是非常高的。 date; cat 2000/*/*.txt | sort unsorted > /dev/null; date # 1秒钟,大家凡事都试一试,就有切身体会了 == diff == * 查看两个文本文件的差异,这个命令非常重要,其工作的原理也很重要(版本控制软件,如svn、git都是基于这个来做增量存储) ** 可以是大文件,不需要预先对文件进行排序 * diff file-A file-B ** 其输出信息的语法,要学着看懂。 对第一个文件(A)逐步修改,最终和第二个文件(B)完全一致。 d:删除(删除第一个文件); a:增加(把第二个文件的内容增加到第一个文件); c:替换 <:文件A的内容 >:文件B的内容 diff sorted sorted_uniq | nl | less 130d129:删除文件A的第130行,删掉的内容对应文件B的129行 132,133d130:删除文件A的第132-133行,删掉的内容和文件B的130行对应;注意使用的是原始文件的行号,而不是把前面的操作都做完后更新的行号;这样做当然更容易对比 diff unsorted sorted | nl | less 1,120d0 (删掉的内容和文件B的0行对应) 249a130,131 # 把文件B的130-131行,增加到文件A的249行下面 > B的130行 > B的131行 271,373c163,271 # 将文件A的171-373行,替换为文件B的163-271行 == 过滤器 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 :嵌套命令“~”下面的字符。
返回至
Linux-2020-spring-4-29
。
导航菜单
个人工具
登录
名字空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
导航
首页
新闻
成员介绍
研究组
科研项目
发表论文
在线演示
工具
链入页面
相关更改
特殊页面
页面信息