GNU 文本处理程序 备忘
时间:2006-02-18 来源:lvjinhua
UNIX的哲学即是:用小程序完成大任务。
1 UNIX文件
在UNXI中文件是一种字节流,一切都是文件,它可以是一个本地存储设备中的文件,可以是一个TCP/IP套接口,也可以是一个/dev下的设备。
2 重定向与管道
重定向即将一个文件作为STDIN输入或将STDOUT/STDERR输出到一个文件。< 将文件重定向到STDIN,>将STDOUT重定向到文件,>>将STDOUT追加到文件,2>将STDERR重定向到文件, &>将STDERR与STDOUT同时重定向到文件。
管道在UNIX中使用 | 表示,它的作用是将一个程序的STDOUT发送到另一个程序的STDIN。
prog1 abc.txt | prog2 - > textout.txt 2> texterr.txt
在上边的例子中,程序 Prog1 处理Abc.txt文件中的内容,将其输出通过管道发送到Prog2,在Prog2中使用 - 表示其输入来自STDIN而不是文件;最后Prog2将其STDOUT重定向到Textout.txt,STDERR重定向到 Texterr.txt。
3 cat 和 tac
用来将文件中的内容显示到STDOUT,tac与cat相反,按反方向输出,即最先输出最后一行。
-T 选项将文件中的Tab键显示为^I的形式。
-E 在每行结束处显示$符号。
4 od 和 hexdump
od 将文件中的内容以八进制的形式输出。
hexdump 将文件内容以十六进制的形式输出。
加上 -c 形状将以字符的形式打印,不可见字符与C中类似。
-j 和 -N 可以设置跳过最初的字节数与只读取的字节数。
hexdump -C 选项在显示字符16进制时,在后边附加显示其ASCII字符。
5 << 重定向(HERE文档)
如:cat> a.txt <<EOF ,作用是将STDIN输入的内容保存到a.txt中,当输入EOF是结束。
6 cut
一般用于处理有格式的记录表。
默认使用制表符(Tab)分隔每个字段,也可通过 -d 来重新指定。
cut -f 1,3,4 test 的作用是将test中每行使用Tab分隔的第1,3,4列显示出来。
7 expand 和 unexpand
用于将Tab键转换为空格与将空格转换为制表符。
8 fold
用于将较长的行折叠,默认限制是80行。
-s 选项控制从空白处折行
-w 选项控制每行长度
9 fmt
比fold功能强,它能保留初始缩进,并聚合一些段落。
10 nl
对文件中的行编号。cat也具有相似的功能。
11 tr
用于转换文件中的字符。
-s 选项
tr -s "\t " "|" < test.txt 将test.txt中的Tab与空格用|号表示,并压缩重复的空白。
tr “a-z” “A-Z” < test.txt 将所有小写字母转换为大写字母。
tr -d “[:lower:]" < test.txt 删除所有的小写字母。
12 sort
sort test.txt 对test.txt中的每行进行默认规则的排序。
sort -k 3.1 -n test.txt 此示例中 -n 表示对排序的基准字段使用数值比较,-k 后的数值表示第3个字段,只有第3字段中的第1个字符参与。
还可以指定许多规则,如忽略大小写,排序准则等。
13 uniq
删除完全相同的邻近行,或在一些规则下的足够近似邻近行。
uniq -c test.txt 统计重复出现的次数。
uniq -f 1 test.txt 不比较第一个字段。
14 tsort
对一个有向图执行拓扑排序。主要用来查找依赖关系中的适当次序。
第个依赖关系之间使用空格进行分隔。
1 UNIX文件
在UNXI中文件是一种字节流,一切都是文件,它可以是一个本地存储设备中的文件,可以是一个TCP/IP套接口,也可以是一个/dev下的设备。
2 重定向与管道
重定向即将一个文件作为STDIN输入或将STDOUT/STDERR输出到一个文件。< 将文件重定向到STDIN,>将STDOUT重定向到文件,>>将STDOUT追加到文件,2>将STDERR重定向到文件, &>将STDERR与STDOUT同时重定向到文件。
管道在UNIX中使用 | 表示,它的作用是将一个程序的STDOUT发送到另一个程序的STDIN。
prog1 abc.txt | prog2 - > textout.txt 2> texterr.txt
在上边的例子中,程序 Prog1 处理Abc.txt文件中的内容,将其输出通过管道发送到Prog2,在Prog2中使用 - 表示其输入来自STDIN而不是文件;最后Prog2将其STDOUT重定向到Textout.txt,STDERR重定向到 Texterr.txt。
3 cat 和 tac
用来将文件中的内容显示到STDOUT,tac与cat相反,按反方向输出,即最先输出最后一行。
-T 选项将文件中的Tab键显示为^I的形式。
-E 在每行结束处显示$符号。
4 od 和 hexdump
od 将文件中的内容以八进制的形式输出。
hexdump 将文件内容以十六进制的形式输出。
加上 -c 形状将以字符的形式打印,不可见字符与C中类似。
-j 和 -N 可以设置跳过最初的字节数与只读取的字节数。
hexdump -C 选项在显示字符16进制时,在后边附加显示其ASCII字符。
5 << 重定向(HERE文档)
如:cat> a.txt <<EOF ,作用是将STDIN输入的内容保存到a.txt中,当输入EOF是结束。
6 cut
一般用于处理有格式的记录表。
默认使用制表符(Tab)分隔每个字段,也可通过 -d 来重新指定。
cut -f 1,3,4 test 的作用是将test中每行使用Tab分隔的第1,3,4列显示出来。
7 expand 和 unexpand
用于将Tab键转换为空格与将空格转换为制表符。
8 fold
用于将较长的行折叠,默认限制是80行。
-s 选项控制从空白处折行
-w 选项控制每行长度
9 fmt
比fold功能强,它能保留初始缩进,并聚合一些段落。
10 nl
对文件中的行编号。cat也具有相似的功能。
11 tr
用于转换文件中的字符。
-s 选项
tr -s "\t " "|" < test.txt 将test.txt中的Tab与空格用|号表示,并压缩重复的空白。
tr “a-z” “A-Z” < test.txt 将所有小写字母转换为大写字母。
tr -d “[:lower:]" < test.txt 删除所有的小写字母。
12 sort
sort test.txt 对test.txt中的每行进行默认规则的排序。
sort -k 3.1 -n test.txt 此示例中 -n 表示对排序的基准字段使用数值比较,-k 后的数值表示第3个字段,只有第3字段中的第1个字符参与。
还可以指定许多规则,如忽略大小写,排序准则等。
13 uniq
删除完全相同的邻近行,或在一些规则下的足够近似邻近行。
uniq -c test.txt 统计重复出现的次数。
uniq -f 1 test.txt 不比较第一个字段。
14 tsort
对一个有向图执行拓扑排序。主要用来查找依赖关系中的适当次序。
第个依赖关系之间使用空格进行分隔。
$ cat dependencies
libpng XFree86
FreeType XFree86
Fontconfig XFree86
FreeType Fontconfig
expat Fontconfig
Zlib libpng
Binutils Zlib
Coreutils Zlib
GCC Zlib
Glibc Zlib
Sed Zlibc
$ tsort dependencies
Sed
Glibc
GCC
Coreutils
Binutils
Zlib
expat
FreeType
libpng
Zlibc
Fontconfig
XFree86
15 pr
提供对文件的诸如页眉,换行,源文件列,页边缩进及可配置的页面和行宽等格式。
pr并不重新换行段落,因此其经常与fmt程序连用。
16 comm
用于比较已经排序的两个文件。
diff的功能更强大。
17 join
允许查找排序记录集合之间的共有字段。
18 paste
大至执行与cut逆向的操作。将多个文件组合到列(字段)中。默认使用Tab分隔,也可以
使用-d 来指定其它分隔字符。
cut -f 1 test.txt > t1.txt
cut -f 3 test.txt > t2.txt
paste -d ',' t1.txt t2.txt
上例将抽取test.txt中的第1和3列,然后重新组合为用’,‘号分隔的内容并输出。
paste -s t1.txt 将t1.txt中的列转换为行。默认使用Tab键分隔。
19 split
按行或字节计数,将一个文件分为多个部分。
split -l 3 test.txt tmp 将test.txt 按3行一组分隔到多个文件中,生成的文件
名使用tmp作为前缀。
20 csplit
根据文件中的上下文行来划分文件,特别是使用正则表达式。
csplit -zq test.txt /===/+1 {*} 使用每行中的===标志来划分文件。-z 表示
清除空文件,{*}表示重复到最后。
21 wc
统计文件中的单词数。
wc test.txt 将输出:lines words chars name 的形式。
wc -w < test.txt 将只输出文件中的单词数。 -l和-c 分别表示行数与字节数。
22 chksum 和 sum
一般用chksum,它将打印文件的CRC校验和及字节统计。
23 md5sum和sha1sum
分别产生128位和160位的校验和。而chksum是16位和32位的。校验和与称为hash码。
md5sum -v md5file 用于校验正确性。
相关阅读 更多 +