文件排序合并

文件排序:

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.以默认方式排序:
[root@iZ2546h6zurZ 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)
[root@iZ2546h6zurZ 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)
[root@iZ2546h6zurZ 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)
[root@iZ2546h6zurZ 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

按块进行排序

[root@iZ2546h6zurZ 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

[root@iZ2546h6zurZ test]# uniq location2.db 
hahahah
lcq
hello
hahahah
lcq
world

[root@iZ2546h6zurZ 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

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

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

[root@iZ2546h6zurZ test]# cut -d: -f1,2 stu2.db
lcq:stu
sgf:stu
xm:stu

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

9.压缩文件和解压文件
[root@iZ2546h6zurZ test]# tar -cf stu.all stu*

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

解压文件

[root@iZ2546h6zurZ test]# tar -xvf stu.all


以上是解压非gzip文件

[root@iZ2546h6zurZ test]# gzip stu.all


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

[root@iZ2546h6zurZ test]# tar -zxvf stu.all.gz 
stu2_body.db
stu2.db
stu_body.db
stu.db

加上-z解压gzip文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 下面是如何用 Python 实现这个过程的代码示例: ``` def merge_sort_file(file1, file2, output_file): with open(file1, "r") as f1, open(file2, "r") as f2: # 读取两个文件中的数据并合并 data1 = f1.read().splitlines() data2 = f2.read().splitlines() data = data1 + data2 # 对数据进行排序 data.sort() # 将排序后的数据输出到新文件中 with open(output_file, "w") as f3: for line in data: f3.write(line + "\n") ``` 使用方法: ``` merge_sort_file("file1.txt", "file2.txt", "output.txt") ``` ### 回答2: 读取两个文件数据合并排序输出到新文件的过程可以分为以下几个步骤: 1. 首先,打开两个原始文件,分别读取它们的数据。每个文件中的数据可能是乱序的,我们需要将它们按照一定的顺序进行合并。 2. 将两个文件中的数据合并到一个新的列表中。可以使用一个临时的列表来存储所有的数据。 3. 对新列表中的数据进行排序。可以使用排序算法,如快速排序、冒泡排序、插入排序等等。这里假设我们使用快速排序算法进行排序。 4. 创建一个新的输出文件。可以使用Python中的open()函数打开一个新文件,并指定写入模式。 5. 将排序后的数据逐行写入新的输出文件中。可以使用Python中的write()函数将数据写入文件。 6. 最后,关闭所有打开的文件。使用Python中的close()函数关闭之前打开的文件,释放文件资源。 总结起来,读取两个文件数据合并排序输出到新文件的过程就是:读取两个文件的数据,合并到一个新的列表中,对列表中的数据进行排序,创建一个新的输出文件,并将排序后的数据逐行写入新文件,最后关闭所有打开的文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值