文件排序合并

文件排序:

sort命令是帮我们根据不同的数据类型进行排序。其语法及经常使用參数格式:

  sort [选项][输入文件]

补充说明:sort可针对文本文件的内容,以行为单位来排序。

參  数:

-b 忽略每行前面開始出的空格字符。

-c 检查文件是否已经依照顺序排序。

-f 排序时。忽略大写和小写字母。

-M 将前面3个字母按照月份的缩写进行排序。

-n 按照数值的大小排序。

-o<输出文件> 将排序后的结果存入指定的文件。

-r 以相反的顺序来排序。

-t<分隔字符> 指定排序时所用的栏位分隔字符。

-k 选择以哪个区间进行排序

编写cargo.db文件

china:121:232:NE3453
usa:434:435:SS343
Hongkong:2323:343:KO32
china:9034:234:HU423
china:9032:5443:IJ232

1.以默认方式排序:

[[email protected] test]# sort -t: cargo.db
china:121:232:NE3453
china:9032:5443:IJ232
china:9034:234:HU423
Hongkong:2323:343:KO32
usa:434:435:SS343

当中使用-t改动分隔符为:

2.指定依照某个域进行排序(-k)

[[email protected] test]# sort -t: -k2 cargo.db
china:121:232:NE3453
Hongkong:2323:343:KO32
usa:434:435:SS343
china:9032:5443:IJ232
china:9034:234:HU423

以上排序不能依照数字进行排序

3.依照数字大小排序(-n)

[[email protected] test]# sort -t: -k2n cargo.db
china:121:232:NE3453
usa:434:435:SS343
Hongkong:2323:343:KO32
china:9032:5443:IJ232
china:9034:234:HU423

4.将排序后的文件重定向到还有一个文件里(-o)

[[email protected] test]# sort -t: -k2n -o cargo2.db cargo.db 

5.awk和sort结合使用

编辑文件location.db

bei jing
qwwq
fdfdfdfa

ji nan
sfdfs
dfdfdsfd

cheng du
gfgadf
fsdfwdfw

hang zhou
fsdfsf
fsdgsd

按块进行排序

[[email protected] test]# cat location.db |awk -v RS="" ‘{gsub("\n","@");print}‘ | sort | awk -v ORS="\n\n" ‘{gsub("@","\n");print}‘
bei jing
qwwq
fdfdfdfa

cheng du
gfgadf
fsdfwdfw

hang zhou
fsdfsf
fsdgsd

ji nan
sfdfs
dfdfdsfd

当中awk -v 就是BEGIN块

RS表示记录的切割符;ORS表示输出分隔符

6.去除反复行

uniq命令

编辑文件location2.db

hahahah
hahahah
lcq
hello
hahahah
lcq
world
[[email protected] test]# uniq location2.db
hahahah
lcq
hello
hahahah
lcq
world
[[email protected] test]# sort -u location2.db
hahahah
hello
lcq
world

uniq命令去除相邻的反复行,sort -u去除后面全部的反复行。

7.记录连接命令join,保证两个文件是有序的

编辑文件

stu2.db

lcq:stu:hahah
sgf:stu:dsiwew
xm:stu:2e2ds

文件stu2_body.db

lcq:fsdfs
sgf:fvbdfgdgfgfgf
xm:fsdfsd
[[email protected] test]# join -t: stu2.db stu2_body.db
lcq:stu:hahah:fsdfs
sgf:stu:dsiwew:fvbdfgdgfgfgf
xm:stu:2e2ds:fsdfsd

8. cut命令按域或者行提取文本

[[email protected] test]# cut -d: -f1,2 stu2.db
lcq:stu
sgf:stu
xm:stu

当中-d改变域分隔符,-f指定提取的域

9.压缩文件和解压文件

[[email protected] test]# tar -cf stu.all stu*

将stu开头的文件压缩为stu.all

解压文件

[[email protected] test]# tar -xvf stu.all

以上是解压非gzip文件

[[email protected] test]# gzip stu.all

将stu.all压缩为stu.all.gz

[[email protected] test]# tar -zxvf stu.all.gz
stu2_body.db
stu2.db
stu_body.db
stu.db

加上-z解压gzip文件

时间: 2024-12-22 15:35:54

文件排序合并的相关文章

文件的合并排序与文件分割

背景:一个文件内有多条数据记录,每条记录为一行,记录按时间字段升序排序. 需求1:将多个这样的文件合并成一个按时间排序的文件 需求2:将一个按数据记录时间字段排好序的大文件分割成几个小文件 代码: 1 import java.io.BufferedReader; 2 import java.io.BufferedWriter; 3 import java.io.File; 4 import java.io.FileInputStream; 5 import java.io.FileOutputS

linux 文件排序 sort

sort命令 sort命令是在Linux里非常有用,它将文件进行排序,并将排序结果标准输出.sort命令既可以从特定的文件,也可以从stdin中获取输入. 语法 sort(选项)(参数) 选项 -b:忽略每行前面开始出的空格字符: -c:检查文件是否已经按照顺序排序: -d:排序时,处理英文字母.数字及空格字符外,忽略其他的字符: -f:排序时,将小写字母视为大写字母: -i:排序时,除了040至176之间的ASCII字符外,忽略其他的字符: -m:将几个排序号的文件进行合并: -M:将前面3个

JAVA之旅(三十)——打印流PrintWriter,合并流,切割文件并且合并,对象的序列化Serializable,管道流,RandomAccessFile,IO其他类,字符编码

JAVA之旅(三十)--打印流PrintWriter,合并流,切割文件并且合并,对象的序列化Serializable,管道流,RandomAccessFile,IO其他类,字符编码 三十篇了,又是一个阳光明媚的周末,一个又一个的周末,周而复始,不断学习,前方的路你可曾看见?随我一起走进技术的世界,流连忘返吧! 一.打印流PrintWriter 打印流有PrintWriter和PrintStream,他的特点可以直接操作输入流还有文件 该流提供了打印方法,可以将各种数据类型原样打印 file对象

MYSQL 磁盘临时表和文件排序

因为Memory引擎不支持BOLB和TEXT类型,所以,如果查询使用了BLOB或TEXT列并且需要使用隐式临时表,将不得不使用MyISAM磁盘临时表,即使只有几行数据也是如此. 这会导致严重的性能开销..即使配置Mysql将临时表存储在内存块设备上(ram-disk),依然需要很多昂贵的系统调用. 最好的解决方案是尽量避免使用BLOB和TEXT类型.如果实在无法避免,有一个技巧是在所有用到BLOG字段的地方都使用SUBSTRING(culumn,length)将列值转换为字符串(在order b

Linux文件排序和FASTA文件操作

文件排序 seq: 产生一系列的数字; man seq查看其具体使用.我们这使用seq产生下游分析所用到的输入文件. # 产生从1到10的数,步长为1 $ seq 1 10 1 2 3 4 5 6 7 8 9 10 # 产生从1到10的数,步长为1,用空格分割 $ seq -s ' ' 1 10 1 2 3 4 5 6 7 8 9 10 # 产生从1到10的数,步长为2 # 如果有3个数,中间的数为步长,最后一个始终为最大值 $ seq -s ' ' 1 2 10 1 3 5 7 9 $ cat

文件排序去重新思路

我一直觉得思路是比较重要的. 前几天终于从一个充满了垃圾广告的网盘里下载到了传说中的 csdn 数据库(就是以前泄露的那个,现在被各种封杀了) 我写了个一个python脚本从中提取密码(用户名和邮箱我都不需要),用来做一个字典. 但是我发现,其中有很多是重复的,比如123456789之类的. 所以,第一个问题摆在了我的面前,怎么去重,怎么给文件中的数据去重. 我首先想到的就是python 中的先set在list. 然后我遇到了第二个问题,当这个字典文件比较大的时候,全部读取到内存是不合理的. 通

oracle表之间的连接之------&gt;排序合并连接(Merge Sort Join)

排序合并连接 (Sort Merge Join)是一种两个表在做连接时用排序操作(Sort)和合并操作(Merge)来得到连接结果集的连接方法. 对于排序合并连接的优缺点及适用场景如下: a,通常情况下,排序合并连接的执行效率远不如哈希连接,但前者的使用范围更广,因为哈希连接只能用于等值连接条件,而排序合并连接还能用于其他连接条件(如<,<=,>.>=) b,通常情况下,排序合并连接并不适合OLTP类型的系统,其本质原因是对于因为OLTP类型系统而言,排序是非常昂贵的操作,当然,如

oracle 表连接 - sort merge joins 排序合并连接

一. sort merge joins连接(排序合并连接) 原理 指的是两个表连接时, 通过连接列先分别排序后, 再通过合并操作来得到最后返回的结果集的方法. 假如表 T1 和 T2 的连接方式是排序合并连接, oracle 执行步骤如下: (1) 根据 sql 语句中的谓词条件(如果有) 访问 T1 表, 得到一个过滤的结果集, 然后按照 T1 中的连接列对结果集进行排序 (2) 根据 sql 语句中的谓词条件(如果有) 访问 T2 表, 得到一个过滤的结果集, 然后按照 T2 中的连接列对结

服务器端json数据文件分割合并解决方案

问题引入 Json 是什么就不多说了,本文把Json理解成一种协议. 印象之中,Json貌似是前端的专属,其实不然,服务器端组织数据,依然可以用Json协议. 比如说,某公司有一套测评题目(基于Json协议),这些题目比较珍贵,不想直接放在js中,所以就将题目文件放在服务器端,然后通过一个接口去请求,多一层控制,就多了一层保护,通过在接口上加权限,可保证数据安全. 如此一来,服务器端必定会有一个Json文件(纯文本文件),Json文件中包含Json数据. 假设Json数据结构如下: 1 { 2