cut cut就是“切”的意思,这个命令可以将一段信息的某一段“切”出来,处理的信息是以“行”为单位。 用法: 1. cut-d'分隔符' -f fields echo $PATH > test echo $PATH | cut -d':' -f 5 >> test echo $PATH | cut -d':' -f3,5 >> test more test /sr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games /usr/bin /usr/local/bin:/usr/bin
注意:如果用cut命令从文件中析取字段,而又没有指定分隔符,cut就用制表符作为默认字段分隔符。 2. cut -c字符范围 cut-cn1-n2 file(其中n1和n2是列号,n2可以省略,则缺是从n1截取到该列最后一个字符) 例如: date |cut -c1-4 2012 date |cut -c31- 16:11:22CST
paste 在某种意义上,paste命令就是与cut相反。它不是把行分开,而是把多行合在一起。paste命令的一般格式:paste files 其中files制定的那些文件中的对应行形成一行,然后写入标准输出。在files中可以用破折号(-)表示从标准输入获得输入。 假如这里有两个文件,name和grade。 more name grade :::::::::::::: name :::::::::::::: Barbara Alie Susan Tony :::::::::::::: grade :::::::::::::: 99.0 76.0 89.0 100.0
从标准输入获得数据: paste name - >tt 12 13 14 15 more tt Barbara 12 Alie 13 Susan 14 Tony 15
将两个文件合并成一个文件: paste name grade >>info cat info Barbara 99.0 Alie 76.0 Susan 89.0 Tony 100.0
文件中的每一行都与其他文件中相同行显示在一起,中间用制表符分隔,如果不想用制表符分隔可以用-d制定分隔符。 paste -d: name grade >info cat info Barbara:99.0 Alie:76.0 Susan:89.0 Tony:100.0 -s选项告诉paste把同一文件中的行粘贴在一起,而不是从其他文件。如果制定一个文件名,其效果就是把文件中的所有行合并成一行,原来各行之间用制表符或者用-d选项制定的分隔符分隔。 paste -s name Barbara Alie Susan Tony ls / | paste -d' ' -s bin boot cdrom dev etc home host initrd.img initrd.img.old lib lost+foundmedia mnt opt proc root run sbin selinux srv sys tmp usr var vmlinuzvmlinuz.old
tr tr可以用来删除一段信息当中的文字,或者是进行文字信息的替换。
grep grep分析一行信息,若当中有我们所需要的信息就将该行取出来,简单的语法是这样的: grep [-acinv] [--color=auto] '查找的字符串'filename 参数: -a将binary文件以text文件的方式查找数据; -c计算找到’查找字符串‘的次数; -i查找的时候,忽略大小写 -n顺便输出行号; -v反向选择,即显示出没有‘查找字符串’ 内容的那一行
以info文件为例: more info | grep 99 Barbara:99.0 more info | grep -vcn 99 3 info| grep -vn 99 2:Alie:76.0 3:Susan:89.0 4:Tony:100.0 more info | grep -n '[A-Z]...[a-z]' 1:Barbara:99.0 3:Susan:89.0 grep是个很棒的命令,但是它的强大之处在于它能很好的处理正则表达式
sort sort是个很有趣的命令,它可以帮我们进行排序,而且可以根据不同的数据类型来排序。例如数字和文字的排序就不一样。 用法: sort [-fbMnrtuk] [file or stdin] 参数: -f:忽略大小写 -b:忽略前面的空格部分 -M:以月份的名字来排序 -n:使用“纯数字”进行排序 -r:反向排序 -u:就是uniq,相同的数据中,仅出现一行代表 -t:分隔符,默认用[tab]键来分隔 -k: 以哪个区间(filed)来排序
还是以info文件为例,按成绩排序: more info | cut -d: -f2,1 | sort Alie:76.0 Barbara:99.0 Susan:89.0 Tony:100.0 more info | cut -d: -f2,1 | sort -r Tony:100.0 Susan:89.0 Barbara:99.0 Alie:76.0 按名字进行排序: sort -t':' -r -k1 info Tony:100.0 Susan:89.0 Barbara:99.0 Alie:76.0 sort -t':' -r -k2 info Barbara:99.0 Susan:89.0 Alie:76.0 Tony:100.0 (按理说应该是按成绩逆序排序的,但是结果不正确,只能说sort对域的处理没有cut好)
uniq 如果排完序以后,想要将重复的数据仅显示一列,该怎么做呢? uniq [-ic] -i:忽略大小写 -c:进行计数
wc 这个命令用于统计文件中有多少字,多少行,多少字节。 用法: wc [-lwm] -l:仅列出行 -w:仅列出字数 -m:多少字符 常用与统计一个目录中包含多少文件。 ls| wc -l |
|