一起学Shell之(四)文本处理以及管道


文本处理工具

排序文本:sort解释:将输入看作具有多条记录的数据流,而记录是由可变宽度的字段组成,记录是以换行字符作定界,字段的定界符则是定字符或者用户指定的单个字符, 用法:将输入行按键值字段与数据类型选项以及locale排序。语法:sort [options..] [file(s)]主要选项:-b:忽略开头的空白。-d:字典顺序-r:倒序-o:输出到指定文件-n:以整数类型作比较 ASCII顺序排序

 

 -t char 解释:以单个字符char作为默认的字段分隔字符,取代默认的空白字符。行为模式:sort读取指定文件否则标准输入 排序规则:cut -fl afile |od -a -b-a:ASSII -k 选项后面接着一个字段编号,或者是一对数类型。b忽略开头的空白d字典顺序f不区分字母大小写

 

g以一般的符号数进行比较,只适用于GUN版本i忽略无法打印的字符n以整数进行比较r位置倒序 sort -t: -k3nr /etc/passwd 解释:以:为分隔符,查找第三个并以倒序排列。 -u 仅输出唯一的记录 文本块排序:sort并不稳定 

 

sort是非常重要的命令 册除重复:sort -u 这个是根据匹配的键值。非匹配的记录:uniq 一般用法:sort....|uniq|...主要选项:-c每个输出行之前加上该行重复的次数-d公显示重复的行-u显示复制的行 注:默认是显示唯一的,取重复的一行。 

 

作用是册除连续的两行,一般要先排序。参照一般用法。 重新格式化段落:fmt常用选项:-s权切到较长的行,但不会将短行结合成较长的行-w n则设置输出行宽度为n个字符(默认通常在75个左右) /usr/share/dict/word 英文字典位置 用途:一般查看文件 计算行数、字数、字符数:WC-c字节数

 

-l行数-w字数用法:wc [options...] [file1] [file2]  获取开头几行或结尾几行:head -n nfileawk 'FNR<=n'filesed -e nqfile 结尾tail -n n file

 

 重要选项:-f进入无限的循环之中 file [file]string [file] 煮酒品茶:风格有很大的改变,没有加很繁琐的代码,做一个笔记篇,自己翻起来也是只有重要的文字,能一目了然。 小结:sort fmt uniq head tail wc file sering  

 

管理的神奇魔力 Unix工具使用原则:想清楚这个问题该如何划分为更简单的工作,每个部分是不是已有现成的工具能解决,还是你可以写几行Shell程序或使用脚本语言就能马上解决。 /etc/passwd 7个字段:用户名称、是否加密、用户ID、组ID、用户姓名、根目录、登陆的Shell 提取字段用:awk 与cut 如提取第五个字段分别是:... |awk -F: '{print $5}' | ....... |cut -d: -f5 | ... 其实上一节学awk与cut时都讲过了。 

 

问题:具有10个字母的单词,以ab开头,但第七个字符不是x就是z。想:肯定是先找字典文件然后用正则整出来。所以我写的是。 #cat /usr/share/dict/words |grep '^[ab]......[xz]...$' 解释:查找以a或b开头的,第七个字母是xz的,第十个字母是任意字符结尾的。 小结:原书中很多东西我省了,需要的直接上原书瞧瞧。一个实例,但管道从左至右吧。

 

相关内容