第二十一章21-文本处理
学习用来‘切割’文本的程序
cat:连接文件并打印到标准输出
sort:给文件行排序
uniq:报告或者忽略重复行
cut:从每行中删除文本区域
paste:合并文件文本行
join:基于某个字段来连接两个文件的文本行
comm:逐行比较两个文件的文本行
diff:逐行比较文件
patch:给原始文件打补丁
tr:翻译或删除字符
sed:用于筛选和转换文本的流编辑器
aspell:交互式拼写检查器21.1 文本应用程序
大文档先用文本格式编辑再用标记语言来描述已完成的文档格式
sort -k:指定按某一列排序
[seven@localhost ~]$ sort -k 3.1nbr abc.txt
cut -f:抽取一列字段
[seven@localhost ~]$ cut -f 3 abc.txt
paste filename1 filename2:添加一个或多个文本列到文件中
[seven@localhost ~]$ paste name.txt school.txt > student.txtjoin: 类似于paste,通常与关系型数据库关联,往文件中添加列
文件中的行得按关键字排序21.2 比较文本
comm file1 file2: 第一列是第一个文件独有的,第二列是第二个文件独有的,第三列是共有的
[seven@localhost ~]$ comm oldfile.txt newfile.txt
diff file1 file2: 对两文件差异的描述,描述了更改的位置和类型
[seven@localhost ~]$ diff oldfile.txt newfile.txt
diff -u file1 file2: 上下文模式,会显示重复的上下文
[seven@localhost ~]$ diff -u oldfile.txt newfile.txt
patch用法,先生成diff文件,diff文件已经在标题行中包含了文件名,所以不必指定修补的目标。
一旦应用了补丁,file1与file2将相匹配。21.3 运行时编辑
tr:用来更改字符基于字符的查找和替换操作,使用时需要两个字符集参数
[seven@localhost ~]$ echo "lowercase letter" | tr a-z A-Z
LOWERCASE LETTER
sed:流编辑器,给出单个编辑命令或包含多个命令的脚本文件名,sed 中的大多数命令之前
都会带有一个地址,其指定了输入流中要被编辑的文本行。如果省略了地址,然后会对输入流的每一行执行编辑命令。
[seven@localhost ~]$ echo "front" | sed '2s/front/back/'
front
aspell:交互式的拼写检查器,检测拼错的单词。 aspell check filename.txt
[seven@localhost ~]$ aspell check abc.txt第二十二章22-格式化输出
格式化输出让文本准备就绪打印
nl-添加行号
fold-限制文件列宽
fmt-一个简单的文本格式转换器
pr-让文本为打印做好准备
printf-格式化数据并打印出来
groff-一个文件格式系统22.0 简单的格式工具
1.显示行号
[seven@localhost 桌面]$ nl foo.txt
1 The quick brown fox jumped over hte lazy dog. was cool.
2 Line 2
3 Line 3
4 Line 4
5 Line 5
2.限制文件列宽
[seven@localhost 桌面]$ cat foo.txt | fold -w 12
The quick br
own fox jump
3.填充并且将文本黏贴在一起并且保留了空白符和缩进
[seven@localhost 桌面]$ fmt -w 50 foo.txt | head
The quick brown fox jumped over hte lazy
dog. was cool. Line 2 Line 3 Line 4 Line 5
第二十三章23-打印
学习用于打印文件和控制打印选项的命令行工具
pr-转换需要打印的文本文件
lpr-打印文件
lp-打印文件(System V)
a2ps-为PostScript打印机格式化文件
lpstat-显示打印机状态信息
lpq-显示打印机状态信息
lprm-取消打印任务
cancel-取消打印任务(System V)23.1 打印简史
1.早期菊轮打印
2.图形化打印机催生了postScript23.2 在Linux下打印
当前Linux系统采用两套软件配合显示和管理打印
1.CUPS
2.Ghostscript23.3 为打印准备文件
pr-转换需要打印的文本文件 (文本适应页宽)23.4 将打印任务发送到打印机
CUPS打印体系支持两种曾用于类Unix系统的打印方式
1.Berkeley或LPD,使用lpr程序
2.System V版本的Unix,使用lp程序23.5 监视和控制打印任务
lpstat-显示打印系统状态
lpq-显示打印机队列状态
lprm和cancel-取消打印任务
第二十四章24-编译程序
为什么要编译软件
1.可用性
2.及时性make:维护程序的工具
24.1 什么是编译?
编译是把源代码翻译成计算机处理器的母语过程
链接的过程经常与编译结合在一起
脚本语言不需要编译,加快了大程序开发24.2 编译一个C语言
下载.tar.gz,解压成文件夹
解压前先 tar tzvf filename | head24.3 检查源码树
ls命令列出所有文件,
第一步./configure ,检测是否安装了必要的外部工具和组件,得到Makefile
第二步 make 结果得到 目标文件
最后一步 usr/local/bin make install 安装
第二十五章25-编写第一个Shell脚本
通过我们的工具一起放置到我们自己设计的程序中
shell就会自己来执行这些复杂的任务序列25.1 什么是Shell脚本
包含一系列命令的文件,shell读取这个文件并执行25.2 怎样编写一个Shell脚本
编写一个脚本,
chomod使得脚本可执行
把脚本放置到shell能找到的地方25.3 脚本文件格式
文本格式,设置权限为755,每个人都能执行25.4 脚本文件
PATH 环境变量
~/bin 目录是存放个人所用脚本的好地方25.5 更多的格式技巧
长选项名称便于阅读
缩进和行继续符便于阅读
提供可读性就是提高可维护性