1:标准IO

Unix中的标准IO主要包括:标准输入、标准输出(正常输出)、标准错误(异常信息)

2:重定向输出

内容 > 文件名 :将内容输出到文件,并且覆盖文件原来内容;文件不存在则新建
内容 >> 文件名:将内容追加到文件末尾

3:重定向输入

指令 < 文件名 :从文件中读取数据给指令处理

4:管道线

一个程序的标准输出能自动作为下一个程序的标准输入。

指令1 | 指令2 :指令1的输出作为指令2的输入

5:组合输出

tee 文件名:从标准输入读取数据,并向标准输出和文件发送数据

6:长选项与短选项

短选项: -字符

长选项:--单词

7:过滤器——任何能从标准输入读取文本数据,经过处理后往标准输出写入文本的程序

例如:sort程序

8:如何组合使用过滤器

熟练使用Unix是指:能够熟练运用Unix程序员们已经写好的众多程序来解决自己的问题。

分解问题:针对自己遇到的问题,进行分解。

选择程序:对每个小问题,使用适合的程序(过滤器)来处理。

组合:然后使用 管道线 连接起来。

9:最简单的过滤器——cat

cat :接收标准输入,并将内容发送到标准输出
cat > 文件:重定向输出到文件
cat >> 文件:重定向追加输出到文件中
cat 文件:从文件中读取数据
cat file... :按顺序读取多个文件,并且将读取内容显示在屏幕上
cat file... > 组合文件:按顺序读取多个文件,并且将读取内容写入到标准输出【可用于组合多个文件】
cat file... | 指令:按顺序读取多个文件,并且将读取内容通过管道输送给指令程序

10:常用过滤器

11:分拆文件——split

split -l lines file:将file文件分拆成每个文件最大行数为lines行的小文件

12:文本反转——tac

tac files... > 文件:从files文件们读取数据,将文本行顺序反转后写入到标准输出

13:各行字符反转——rev

rev 文件 :将文件中每行字符反转

14:从文件头尾选择数据——在管道线中使用head、tail

...指令 | head -n lines :将输出的头n行提取
...指令 | tail -n lines :将输出的尾n行提取

15:按列删除数据——colrm(column remove)

colrm [startcol] [endcol]:删除开始~结束列【适用于二维、表格显示的数据】

16:文件比较过滤器

【查分与补丁:使用 diff 旧文件 新文件 得出差分,然后在其他地方使用 patch 按照差分来修改旧文件,就得到了新文件。这就是原始的 差分—补丁 思想。】

17:逐字节比较——cmp

cmp 文件1 文件2

18:按行比较,有序

comm 文件1 文件2

19:无序比较、差分——diff

diff 文件1 文件2

20:按列抽取数据——cut

cut -c list file:list为要抽取的列下标集合,如 ,,,

21:组合数据列——patse

patse files...:将多个文件中内容按列组合,成为一张大表

22:创建行号

nl -v 起始行号 -i 行号增量 files... :为文件中每行创建行号

23:统计行、单词和字符数量——wc(word count)

wc files
=======
输出:行数 单词数 字符数 文件名

24:制表符 替换成 空格

expand files

25:空格 替换成 制表符

unexpand files

26:拆分长行

fold -w 行宽(小于等于80) file1 > file2

【一行80字符:因为第一代计算机使用穿孔卡片存储数据,当时的卡片一行80列,每列一个字符】

27:格式化段落

fmt file

28:按页格式化——pr

pr file

29:按特定模式(正则)选取行——grep

grep pattern files :按特定模式抽取行

30:选取特定模式开头的行——look

look pattern files

31:数据排序——sort

sort [-d -f -n] infile > outfile:将infile数据排序后输出到outfile
sort -c file:检查文件数据是否有序

32:ASCII码字符顺序

【常用记忆:空格在数字之前,数字在大写之前,大写在小写之前】

33:重复行操作——uniq

uniq  file:去除重复行后输出
uniq -d file1 > file2:查看重复行
uniq -c file1 > file2:统计重复行数
uniq -u file:查看唯一重复行

34:合并两个文件中的有序数据——join

join [- field][- field] file1 file2:根据文件1与文件2中对应的field值相同的行合并在一起

35:拓扑排序——tsort

tsort file:对文件进行拓扑排序

36:字符替换——tr

tr 原字符 替换字符 < file 【注意是字符替换】

《Unix&Linux大学教程》学习笔记四:标准I/O 与 过滤器的更多相关文章

  1. 《Unix&Linux大学教程》学习笔记一:历史与常识

     “为什么说Unix/Linux是自由的:         因为我们可以自己组装一个操作系统:Unix/Linux内核+其他实用工具+编程工具+GUI         因为我们可以自由地获取开源工作者 ...

  2. 《Unix&Linux大学教程》学习笔记6——Unix文件系统

    1:Unix文件类型——3种 普通文件(常规文件):文本文件(纯文本.脚本.源程序.配置文件.html等).二进制文件(多媒体文件.数据库等) 目录:用于组织文件 伪文件:不存储数据,目的是提供一种服 ...

  3. 《Unix&Linux大学教程》学习笔记5 :正则表达式

    1:Unix下正则表达式规则

  4. 《Unix&Linux大学教程》学习笔记七:进程与作业控制

    1:进程:一个内存中的程序+程序所需数据+管理程序的各种状态信息. 2:进程由内核进行管理,内核使用调度器,给予进程一个时间片来运行,然后切换到下一个进程. 3:进程分叉 fork :创建一个子进程 ...

  5. 《Unix&Linux大学教程》学习笔记三:Shell常识

    1:全局变量与局部变量 全局:可以从父进程传递给子进程的变量,如:环境变量. 局部:只能在特定的子Shell中使用的变量. 局部变量变全局:使用 “export 局部” 指令将创建的局部变量导出到环境 ...

  6. 《Unix&Linux大学教程》学习笔记二:指令常识

    1:指令的本质——调用可执行程序 在Shell输入命令时,其实就是根据名称运行相应的程序. 2:在系统中查找程序 which 指令名 type 指令名 3:时间与日历 date [-选项] 参数 ca ...

  7. unix&linux大学教程 目录

    第1章unix简介 第2章什么是linux?什么是unix 第3章unix连接 第4章开始使用unix 第5章gui:图形用户界面 第6章unix工作环境 第7章unix键盘使用 第8章能够立即使用的 ...

  8. Linux System Programming 学习笔记(四) 高级I/O

    1. Scatter/Gather I/O a single system call  to  read or write data between single data stream and mu ...

  9. 《嵌入式Linux基础教程学习笔记一》

    常用书目下载地址:http://www.cnblogs.com/pengdonglin137/p/3688029.html 第二章 1.进程上下文和中断上下文(Page20) 当应用程序执行系统调用, ...

随机推荐

  1. DDD领域模型实现依赖注入(六)

    添加下订单的值对象: public partial class CustomerInfo:ValueObject { /// <summary> /// 下订单的值对象 /// </ ...

  2. 【C++ Primer 第15章】定义派生类拷贝构造函数、赋值运算符

    学习资料 • 派生类的赋值运算符/赋值构造函数也必须处理它的基类成员的赋值 • C++ 基类构造函数带参数的继承方式及派生类的初始化 定义拷贝构造函数 [注意]对派生类进行拷贝构造时,如果想让基类的成 ...

  3. Redis的优势和特点

    Redis的特点: 内存数据库,速度快,也支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用. Redis不仅仅支持简单的key-value类型的数据,同时还提供list ...

  4. django 如何动态使用Q查询函数

    这个Q和F用得少, 需要时,总是独立的存在于那时,显得有些突兀, 这次想将filter,order,Q集合在一起, 查询了很多资料,还是有一些困难, 但即可以将Q查询比较优雅的动态生成. 比如: # ...

  5. [CQOI2015]任务查询系统(未完成)

    链接:https://www.luogu.org/problemnew/show/P3168 题意:有n个任务,在si-ti发生,有优先级pi,求x时刻前k个pi之和 n,si,ti<=1000 ...

  6. 非常可乐 HDU1495

    BFS题 一共有六种状态转移 一一枚举就好 设置一个标记数组. 用二重循环可以很清晰的解决代码长的问题 #include<cstdio> #include<cstring> # ...

  7. 洛谷 p1164 小A点菜 【dp(好题)】 || 【DFS】 【恰好完全装满】

    题目链接:https://www.luogu.org/problemnew/show/P1164 题目背景 uim神犇拿到了uoi的ra(镭牌)后,立刻拉着基友小A到了一家……餐馆,很低端的那种. u ...

  8. 洛谷 P1004 方格取数 【多进程dp】

    题目链接:https://www.luogu.org/problemnew/show/P1004 题目描述 设有N*N的方格图(N<=9),我们将其中的某些方格中填入正整数,而其他的方格中则放 ...

  9. Angular 个人深究(二)【发布与订阅】

    Angular 个人深究(二)[发布与订阅] 1. 再入正题之前,首先说明下[ 发布与订阅模式](也叫观察者模式) 1) 定义:定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象.这个 ...

  10. Bzoj2673 3961: [WF2011]Chips Challenge 费用流

    国际惯例题面:如果我们枚举放几个零件的话,第二个限制很容易解决,但是第一个怎么办?(好的,这么建图不可做)考虑我们枚举每行每列最多放几个零件t,然后计算零件总数sum.这样如果可行的话,则有t*B&l ...