shell-文本处理工具

上一篇 / 下一篇  2015-01-23 06:59:10 / 个人分类:Shell

排序文本
含有独立数据记录的文本文件,通常都可以拿来排序。
Sort将输入看作具有多条记录的数据流,而记录是由可变宽的字段组成,记录是以换行字符作为定界符
,字段的定界符则是空白字符或是用户指定的单个字符。
sort [options]  [files]
行的排序
未提供命令行选项时,整个记录都会根据当前locale所定义的次序排序。排序的惯例,完全视语言,国
家以及文化而定。
以字段排序
如果要进一步控制排序操作,可以用-k选项指定排序字段,并且用-t选项来选择字段定界符。
如未指定-t, 则表示字段以空白分隔且记录内开头与结尾的空白都将忽略,如指定-t选项,则被指定的
字段会分隔字段,且空白是有意义的。
-k 选项的后面接着的是一个字段编号,或者是一对数字,有时在-k之后可用空白分隔,每个编号后面都
可以接一个点号的字符位置,及/或修饰符字母之一。
如果仅指定一个字段编号,则排序键值会自该字段的起始处开始,一直继续到记录的结尾(而非字段的结
尾)
如果给的是一对用逗号隔开的字段数字,则排序键值将由第一个字段值的起始处开始,结束于第二个字
段值的结尾。
如果使用点号字符位置,则比较的开始或结束在该字符位置处
如果一个排序键值的起始正好落在记录的结尾处之后,则排序键值为空,且空的排序键值在排序时将优
先于所有非空的键值。
当出现多个 -k选项时,会先从第一个键值字段开始排序,找出匹配该键值的记录后,再进行第二个键值
字段的排序。
删除重复
sort -u 消除操作是根据匹配的键值,而非匹配的记录,uniq命令提供另一种过滤数据的方式,它常用

于管道中,用来删除已使用sort排序完成的重复记录
sort ... | uniq | ....
uniq有3个好用的选项, -c可在每个输出行之前加上该行重复的次数 -d选项则用于仅显示重复的行,而
-u仅显示未重复的行。
格式化段落
fmt 
-s 选项仅切割较长的行,但不会将短行结合成较长的行,而-w n则设置输出行宽度为n 个字符
计算行数,字数以及字节数
wc 默认输出是一行报告,包括行数,字数以及字节数
要求仅输出部分结果时,可使用选项 -c 字节数 -l 行数 -w 字数 -m 计算多字节字符
wc最常处理的是来自于管道的输入数据,但它也接受命令行的文件参数,可以生成一行一个结果,再附
上报告。
wc的新版本会随local而有不同结果,将环境变量LC_CTYPE设为想用的locale,会影响wc把字节序列解释
为字符或单词的分隔器。
提取开头或结尾数行
head -n n
sed -e nq
tail -n n
tail -n n -f  -f要求tail显示指定的文件结尾行数,接着进入无止尽的循环中,休息一秒后又再度醒
来并检查是否需显示更多的输出结果。 在设置-f时,tail只有当你中断时才会停止,通常用Control+C
来中断
由于tail加上-f 选项后便不会自己中断,所以此选项不可用于Shell脚本。
dd 以用户指定的的块大小与数据拷贝数据,可以进行大小写转换,以及ASCII与EBCDIC间的转换
file 将其参数文件内容的前几个字节,与样式数据库进行比对,再在标准输出下,针对各文件显示一行
简短报告

TAG:

 

评分:0

我来说两句

Open Toolbar