shell文本处理工具
sort命令:sort [ options ] [ files ]
options:
-b:忽略每行前面开始出的空格字符;
-c:检查文件是否已经按照顺序排序;
-d:排序时,处理英文字母、数字及空格字符外,忽略其他的字符;
-f:排序时,将小写字母视为大写字母;
-i:排序时,除了040至176之间的ASCII字符外,忽略其他的字符;
-k: 定义排序键值字段
-m:将几个排序号的文件进行合并;
-M:将前面3个字母依照月份的缩写进行排序;
-n:依照数值的大小排序;
-o outfile : 将输出写到指定的文件
-r :倒置排序,顺序为由大到小
-t char :使用单个字符char作为默认的字段
-u: 只有唯一的记录
以字段排序:
排序键值字段的类型
b 忽略开头的空白
d 字典顺序
f 不区分字母的大小写
g 以一般的符点数字进行比较,只适用GNU版本
i 忽略无法打印的字符
n 以(整数)数字比较
r 倒置排序的顺序
# -k2.4,5.6 指的是从第二个字段的第四个字符开始比较,一直比到第五个字段的第六个字符
eg:sort -t: -k1,1 /etc/passwd #用 ':'隔开字段,然后以第一个字段,第一个字符开始比较
eg:sort -t: -k3nr /etc/passwd #制定字段分隔符':',以第三个字段,开始nr比较
eg:sort -t: -k4n -k3n /etc/passwd #第四字段,第三字段比较
删除重复:
sort latin.txt | uniq #显示唯一的、排序后的记录,重复则仅显示唯一的行
sort latin.txt | uniq -c #记数唯一的、排序后的记录
sort latin.txt | uniq -d #仅仅显示重复记录
sort latin.txt | uniq -u #仅仅显示未重复的记录
fmt命令:
基本语法:fmt [options] [parameter]
options:
-c或--crown-margin:每段前两列缩排;
-p<列起始字符串>或-prefix=<列起始字符串>:仅合并含有指定字符串的列,通常运用在程序语言的注解方面;
-s或--split-only:只拆开字数超出每列字符数的列,但不合并字数不足每列字符数的列;
-t或--tagged-paragraph:每列前两列缩排,但第1列和第2列的缩排格式不同;
-u或--uniform-spacing:每列字符之间都以一个空格字符间隔,每个句子之间则两个空格字符分隔;
-w<每列字符数>或--width=<每列字符数>或-<每列字符数>:设置每列的最大字符数。
eg:sed -n -e 9991,10010p /usr/share/dict/words | fmt #截取文件的20行,然后重新格式化20个单词
eg:sed -n -e 9991,10010p /usr/share/dict/words | fmt -w 30#设置每行显示的字符数最大为30
计算行数、字数以及字符数,WC命令
基本语法:wc [options]
options:
-c :计算字节数 eg:cat /etc/passwd | wc -c
-l :计算行数
-w :计算字符
提取开头或结尾数行。head命令,以及相关用法
head –c n [file] #显示file文件的前n个字符
head –n n [file] #取file前n行
head –n [file] # eg:head -3 test.txt,取前三行
head –v [file] #显示文件的头信息
head –q [file] #不显示文件的头信息
awk 'FNR <= n' [file] #取前n行
sed –e nq [file]
sed nq [file]
提取结尾的行:
tail –n n [file]
tail –n file