uniq、join、split、cut、paste命令
时间:2010-09-30 来源:fzguon
一、uniq命令介绍
uniq用来从一个文本文件中取出或禁止重复行,一般uniq假定输入文件已经分类。但uniq也可以支持任何非排序文本,甚至是无规律的行。uniq不同于sort –u,uniq认为持续不断重复出现的行(中间不包括其他文本)才是重复行。
uniq常用选项:
-u 只显示没有重复的行。不使用此选项时,uniq会把连续重复行的内容显示一次。
-d 只显示有重复数据行,每种重复行只显示其中一行。
-c 打印每一重复行出现次数。
-i 忽略字母的大小写
-fx x为数字,忽略前x个域再开始比较(有的系统使用-nx)
-sx 跳过x个字符后再开始比较
eg:uniq –f2 –s4 parts.txt //从文件parts.txt文件中第3个字段的第5个字符开始执行。
二、join命令介绍
join命令主要用来连接两个文件(文件需递增排序)的数据行,join在执行时会在输入文件中寻找具有相同join字段的输入行,join默认使用每个输入文件文件行的第一个字段为join字段;输出行的字段间以一个空格隔开,每一个输出行上包括join字段、file1内其余字段以及file2内其余字段。
join常用选项
-ax:将文件编号为x的文件中未被匹配连接的行额外打印出来。
-o x.y[x.y]:在输出中只打印文件x的第y个字段
-j m:指定两个文件都用第m(m=1,2…)个字段作为join字段
-j1 m :指定文件1使用第m个字段作为join字段
-t char:指定char为输入输出字段的分割符
-i:忽略字母大小写
三、split命令介绍
split用来将大文件分割为小文件。
split [选项] input-filename[输出文件前缀]
常用选项:split的选项一般用来指定输出文件的大小,split默认为100行生成一个新的文件。
-x、-lx、--lines=x:每x行生成一个新的输出文件
-b n、--bytes=n:每n字节生成一个新的输出文件,可用后缀b k m
verbose:每生成一个新的输出文件时,就打印一行信息到标准错误。
输出文件前缀:默认每个生成的输出文件的格式为xaa xab….xzz。文件前缀为x,aa ab…为文件名后缀。可以指定文件名前缀。
四、cut命令介绍
cut命令主要用于选择性的打印输入文件行的部分内容。输入文件可以是一个文件列表。如果没有指定输入文件,或设置为“-”,将会使用标准输入为输入。
cut一般格式为: cut [选项] file1 fiel2
下面介绍其常用选项:
-d char:指定char为输入行字段分割符号,输出使用相同的域分割符。
-f 字段列表:只打印在字段列表中的字段。用数字表示要打印的字段,列表可以使用“-”和“,”(1-m 表示1至m域;1,3表示1域和3域)
eg:cut –d: -f1,6 /etc/passwd //获取其第一域和第二域的内容
-c 字符列表:用数字列表指定要剪切的字符位置,格式同-f的内容。
五、paste命令介绍
命令格式:paste [选项] [file1 file2]
paste将两个输入文件的每一行连接成一个新行并输出。file1的行内容位于file2之前。注意:使用paste命令时需确保不同来源的数据已分类并且确保两个文件行数相同。
常用选项:
-d char:指定char作为字段分割符
-s :将每个文件的内容作为单独一行输出,有n个输入文件就输出n行
“-”:没有指定输入文件而用“-”代替时,表示使用标准输入作为输入源。
eg:ls | paste -d"" - - - - - //以5个文件名为一行显示文件和目录