文件的排序合并和分割.docx

上传人:b****9 文档编号:23390787 上传时间:2023-05-16 格式:DOCX 页数:11 大小:32.67KB
下载 相关 举报
文件的排序合并和分割.docx_第1页
第1页 / 共11页
文件的排序合并和分割.docx_第2页
第2页 / 共11页
文件的排序合并和分割.docx_第3页
第3页 / 共11页
文件的排序合并和分割.docx_第4页
第4页 / 共11页
文件的排序合并和分割.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

文件的排序合并和分割.docx

《文件的排序合并和分割.docx》由会员分享,可在线阅读,更多相关《文件的排序合并和分割.docx(11页珍藏版)》请在冰豆网上搜索。

文件的排序合并和分割.docx

文件的排序合并和分割

1)Sort命令

Sort命令将输入文件看作油多条记录组成的数据流,而记录是由可变宽度的字段组成,以换行符作为定界符。

Sort和awk一样,可将记录分成多个域进行处理,默认的域分隔符是空格。

Sort命令选项极其含义

选项

意义

-c

测是文件是否已经被排序

-k

制定排序的域

-m

合并两个以排序的文件

-n

根据数字大小进行排序

-o[输出文件]

将输出写到指定文件,相当于重定向

-r

将排序结果逆向显示

-t

改变域分隔符

-u

去除结果中的重复行

#Sort-t:

-k3nrcargo.db

输出结果:

Thinkpad:

USA:

14000:

2009:

X31

HP:

China:

12000:

2010:

ne808

Thinkpad:

HongKong:

10000:

2008:

T40

Acer:

Taiwan:

8000:

2010:

Pt210

Ideapad:

China:

8000:

2007:

x60

HP:

China:

5600:

2010:

x60

-t:

表示输入文件(cargo.db)的域分隔符为“:

-k3表示按照第三个域进行排序,由于系统默认是将所有的数据看作是字符串的形式进行处理的,故如果不加-n参数的话,系统将按照域3将数字按照字符进行处理,即按第一个元素的升序进行排序,如果第一个元素相同则对第二个元素进行判断。

-n表示按照数字大小进行排序,

-r表示按照默认的逆序进行输出。

2)Sort和awk的联合使用

#Catprofessor.db

JLuo

Southeastuniversity

Nanjing,china

Yzhang

Victoryuniversity

Melbourne,Australia

Dhou

Beijinguniversity

Beijing,china

Bliu

Shanghaijiaotonguniversity

Shanghai,china

Clin

UniversityofToronto

Toronto,Canada

用sort和awk实现文件块的排序

#catprofessor.db|awk-vRS=”\n\n”‘{gsub(“\n”,”@”);print}’|sort|awk-vORS=”\n\n”‘{gsub(“@”,”\n”);print}’

Cat命令所产生的数据的输出流为:

JLuo\nSoutheastuniversity\nNanjing,china\n\nYzhang\n

Victoryuniversity\nMelbourne,Australia\n\nDhou\nBeijinguni

versity\nBeijing,china\n\nBliu\nShanghaijiaotonguniversity

\nShanghai,china\n\nClin\nUniversityofToronto\nToronto,

Canada\n

Cat命令将输出流数据通过管道符传递给awk命令,第一个awk命令将cat的输出流当成自己的输入流数据进行处理,将“\n”转化成“@”,记录的分隔符“\n\n”,故第一个awk命令的作用就是将不同用户的数据块合并成一条数据记录,再讲这样的记录交给sort命令,sort命令将五条记录进行排序后再交给第二个awk命令,而第二个awk命令的作用则和第一个awk命令的作用正好相反,将五条记录转换成不同用户的书库块,在显示器收到经过处理的数据流后,将经过处理的数据流输出到屏幕上,这样就得到了用户想要的结果。

3)uniq命令

Uniq命令用于去除文件中重复的行,这类似于sort-u选项,但是两者有一定的区别:

Sort-u是将记录按默认的规则排序后在去除重复的行,这样输出的结果中所有的记录只会出现一次,但是uniq则仅仅只是去除了连续的重复记录,也就是说,当文件中有重复的记录,但是该重复的记录并没有连续出现,而是两条相同的记录之间还有其他的记录存在,这样uniq命令则不能去除这样的重复记录,但是sort-u可以。

Uniq命令选项以及含义

选项

意义

-c

打印每行在文本中重复出现的次数

-d

只显示重复的记录,每个重复记录只出现一次

-u

只显示没有重复的记录

统计文件中各个单词出现的次数。

Sed-e‘s/\.//g’-e’s/\,//g’-e‘s/\:

//g’-e‘s//\n/g’input|sort|uniq-c|sort-nr

该语句可以完成统计input文件中各个单词重复出现的次数。

Sed语句的作用是将文件中的所有用“,。

”符号连接成的单词拼接成一个单词,sort命令的作用则是将这些单词排序,是重复的单词连续的出现在一起,uniq命令的作用则是将这些单词中,每个单词重复出现的次数统计出来,最后一个uniq命令的作用则是将这些单词按照重复出现次数由大到小输出。

4)join命令

Join命令用于实现两个文件中记录的连接操作

Join命令选项及其意义

选项

意义

-a1或-a2

分别表示左连接和右连接

-i

比较域内容时,忽略大小写

-o

设置结束显示的格式

-t

改变域分隔符

-v1或v2

分别表示显示左表中没有匹配的记录或者右表

-1或-2

用于显示左表或者右表的连接域

#join-t:

-a1TEACHER.DBTEACHER_HOBBY.DB(左连接)

用左表作为驱动表连接右表,默认匹配域是以:

为分隔符的第一个域。

#join-t:

-v1TEACHER.DBTEACHER_HOBBY.DB

显示驱动表(左表)中没有匹配上的记录,-v2表示显示匹配表(右表)中没有匹配上的记录。

#join-t:

-o1.12.21.2TEACHER.DBTEACHER_HOBBY.DB

按照指定的格式输出记录

#join-t:

-i-13-21TEACHER.DBTEACHER_HOBBY.DB

指定匹配域为第一个表的域3和第二个表的域1,-i表示匹配忽略大小写。

A                  B

Join连接方式是首先是驱动表A,从中拿出一条记录1与匹配表B中的记录进行匹配,A1与B1匹配上则将两条记录进行连接,

A2与B2匹配上后则在表B中做了记录,则下次匹配则从上次结束的地方开始进行匹配,则A3开始从第四条记录开始匹配,直到搜索到最后一条记录也没有找到匹配上,则下一条记录开始进行匹配,也就是说Linux中的join连接的方式是匹配表中的记录从上次匹配上的记录开始进行匹配,而不是每一次都从匹配表的第一条记录开始匹配,这样若两个表中的记录的顺序如果不同有可能连接的结果不同,这就是Linux中join连接和数据库中的连接的不同。

5)cut命令

Cut命令用于从标准输入或者文本文件中按域或者行提取文本。

Cut命令选项及其意义

选项

意义

-c

指定提取的字符数或者字符范围

-f

指定提取的域数或者域范围

-d

改变域分隔符

-c

#cut-c3TEACHER.DB

表示提取每条记录的第三个字符

#cut-d:

-f1,4TEACHER.DB

-d:

域分隔符,表示提取第一个域和第四个域

#cut-d:

-f1-3TEACHER.DB

表示提取第一个域到第三个域之间的部分。

6)paste命令

Paste命令用于将文本文件或者标准输出中的内容粘贴到新文件中,它可以将来自不同文件的数据粘贴到一起形成新的文件。

Paste命令选项以及意义

选项

意义

-d

默认域分隔符是空格或者TAB键,设置行的域分隔符

-s

将每个文件粘贴成一行

-

从标准输入中读取数据

#pastefile1file2

将file1中的内容作为每一行记录的第一个域,file2的内容作为第二个域,中间用TAB键作为分隔符。

#paste-d:

file1file2

用:

作为每条记录的域分隔符。

Sort,join和cut命令改变域分隔符都是为了按域读取文件内容,而paste命令则不同,改变域分隔符是用于设置输出文件的格式。

#paste-d:

-sfile1file2

Paste不加-s选项时,将文本内容“竖着放”,加上-s选项后,将文本内容“横着放”。

#ls|paste-d“:

”-----

将ls的输出作为paste的输入,每5个域作为一条记录进行输出,域分隔符由-d选项指定。

7)split命令

Split命令用于将大文件切割成小文件,split命令可按照文件的行数,字节数切割文件,并能在输出的多个小文件中自动加上编号。

Split命令选项及其意义

选项

意义

-或-l

次两选项等价,都指定切割成小文件的行数

-b

指定切割成小文件的字节数

-C

与-b选项类似,但是,切割时尽量维持每行的完整性

#split-2TEACHER.DBPEO.DB

切割后的小文件的名称,

将文件TEACHER.DB按照每行两个记录进行切割,切割后的小文件名为PEO.DB+aa~zz(PEO.DBaa,PEO.DBab,PEO.DBac)编号,split命令所切割生成的文件最多包含1000行记录。

#split-b100TEACHER.DB

将文件TEACHER.DB按照每100字节进行切分,split命令-b选项在切割文件的时候只考虑文件大小,并不考虑记录的完整性。

#split-C100TEACHER.DB

将文件TEACHER.DB按每100Bytes进行切分,但是切割时并不严格按照100Bytes的大小进行切割,而是在切割时尽量维持每行的完整性。

8)tr命令

tr命令实现字符转换功能,其功能类似于sed命令,但是,tr命令,比sed命令简单,也就是说,tr命令能实现的功能,sed命令都能实现。

“<输入文件”表示将输入文件重定向到标准输入,实际上tr命令与sort,uniq,join等命令不同,他只能从标准输入读取数据,因此,tr命令要么将输入文件重定向到标准输入,要么从管道读入数据。

tr命令选项及其意义

选项

意义

-c

选定字符串1中的字符的补集,反选字符串1中字符集

-d

删除字符集1中出现的所有字符

-s

删除所有重复出现的字符序列,值保留一个

#tr-dA-Z

删除文件file1.db中出现的所有大写字母,

#tr-d“[\n]”

删除文件file.db中的换行符。

Tr命令支持的控制字符

选项

意义

八进制方式

\a

Ctrl+G铃声

\007

\b

Ctrl+H退格符

\010

\f

Ctrl+L走行换页

\014

\n

Ctrl+J换行符

\012

\r

Ctrl+M回车键

\015

\t

Ctrl+ITab键

\011

#tr-s“[\n]”

将文件file.db中出现的连续的换行符进行压缩,使其只不能出现连续的换行符。

#tr-s“[\012]”

\012是\n的八进制表示形式。

#tr-s“[A-z]”

将文件file.db中的所有的字母连续重复出现的进行压缩,是不连续的重复出现相同的字母。

#tr“[A-Z]”“[a-z]”

将文件file.db中的所有的大写字母用小写字母进行替换。

#tr-cs“[A-z]”“[\012*]”

-c表示匹配所有的非字母,将所有的非字母转换成换行符,-s表示压缩所有的连续出现的元素,故经-c处理的文件中连续重复出现的“\012”进行压缩,使其只出现一个。

故上面语句的作用是将文件field.db中的所有非字母的元素进行删除。

9)tar命令

Tar命令是Linux中的归档命令,通俗的讲,tar命令实现了Linux系统文件的压缩和解压,类似于Windows中的winRAR软件。

Tar命令选项及其意义

选项

意义

-c

创建新的包

-r

为包添加新的文件

-t

列出包的内容

-u

更新包中的文件,包中无此文件,将该文件添加到包中

-x

解压该文件

-f

使用压缩文件或者设备,该选项通常是必选的

-v

详细报告tar处理文件的信息

-z

用gzip压缩和解压压缩文件,若加上此选项创建压缩包,那么解压时也许加上此选项。

#tar-cfdb.all*.db

将当前目录中所有匹配*.db的文件打包成db.all文件。

#tar-tfdb.all

查看db.all包中的内容。

#tar-rfdb.alllog*

为包db.all中添加匹配log*的所有文件。

tar-cf命令创建的包实际上是将多个文件放在一起,此文件并没有被压缩。

Gzip命令是linux系统中常用的压缩工具,他可以对tar命令创建的包进行压缩。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1