shell 文件合并,去重,分割
第一:两个文件的交集,并集
前提条件:每个文件中不得有重复行
1. 取出两个文件的并集(重复的行只保留一份)
2. 取出两个文件的交集(只留下同时存在于两个文件中的文件)
3. 删除交集,留下其他的行
1. cat file1 file2 | sort | uniq > file3
2. cat file1 file2 | sort | uniq -d > file3
3. cat file1 file2 | sort | uniq -u > file3
第二:两个文件合并
一个文件在上,一个文件在下
cat file1 file2 > file3
一个文件在左,一个文件在右
paste file1 file2 > file3
第三:一个文件去掉重复的行:
sort file |uniq
注意:重复的多行记为一行,也就是说这些重复的行还在,只是全部省略为一行!
sort file |uniq -u
上面的命令可以把重复的行全部去掉,也就是文件中的非重复行!
具体细节可以查看,cat,sort,uniq等命令的详细介绍
第四:将一个大的文件分割成多个小文件:
采用一个50M大小的日志文件进行测试。
日志文件名:log.txt.gz。
文件行数:208363
语法:split [-<行数>][-b <字节>][-C <字节>][-l <行数>][要切割的文件][输出文件名]
# wc -l log.txt //计算一个文件的总行数;
208363 log.txt
# split -l 120000 log.txt newlog //通过指定行数,将日志分割成两个文件;
# du -sh *50M log.txt
29M newlogaa
22M newlogab
# file * //分割后的文件与原文件属性一样
log.txt: ASCII text, with very long lines, with CRLF line terminators
newlogaa: ASCII text, with very long lines, with CRLF line terminators
newlogab: ASCII text, with very long lines, with CRLF line terminators
# gzip newlogaa newlogab //将分割后的文件进行压缩,以便传输
# gunzip log.txt.gz //一定要先解压,否则分割的文件是不能cat/zcat显示;
#dd bs=20480 count=1500 if=log.txt of=newlogaa //按大小分第一个文件
#dd bs=20480 count=1500 if=log.txt of=newlogab skip=1500 //将大小之后的生成另一个文件#file *
log.txt: ASCII text, with very long lines, with CRLF line terminators
newlogaa: ASCII text, with very long lines, with CRLF line terminators
newlogab: ASCII text, with very long lines, with CRLF line terminators
#gzip log.txt.gz //如不解压缩,下面请用zcat。
#wc -l log.txt //统计一个行数
208363 log.txt
# head -n `echo $((208363/2+1))` log.txt > newloga.txt //前x行重定向输出到一个文件中;
#tail –n `echo $((208363-208362/2-1))` log.txt >newlogb.txt //后x行重定向输出到一个文件中;
#gzip newloga.txt newlogb.txt //将两个文件进行压缩
#gzip log.txt.gz#awk ‘{if (NR<120000) print $0}’ log.txt >newloga.txt#awk ‘{if (NR>=120000) print $0}’ log.txt >newlogb.txt
#awk ‘{if (NR<120000) print $0 >”newloga.txt”;if (NR>=120000) print $0>”newlogb.txt”}’ log.txt
Cat log.txt| head –12000 >newloga.txt
Cat log.txt | tail –23000 >newlogb.txt
如用此方法分割文件的后一部分,那么执行第二行命令文件时,前x行是白白读一遍的,执行的效率将很差,如文件过大,还可能出现内存不够的情况。
shell 文件合并,去重,分割的更多相关文章
- linux shell文件合并 去重 分割
1,合并+去重+分割 转载:shell 文件合并,去重,分割 - kakaisgood - 博客园 (cnblogs.com) 第一:两个文件的交集,并集前提条件:每个文件中不得有重复行1. 取出两个 ...
- linux下文件合并、分割、去重
1.文件合并 1.1文件上下合并 cat f1 f2> muti (将文件f1.f2合并成文件muti,f1在上,f2在下) 1.2左右合并 paste f1 f2 > muti (将 ...
- Linux Shell编程第5章——文件的排序、合并和分割
目录 sort命令 sort命令的基本用法 uniq命令 join命令 cut命令 paste命令 split命令 tr命令 tar命令 sort命令 sort命令是Linux系统一种排序工具,它将输 ...
- linux文件合并,去重,分割
第一:两个文件的交集,并集前提条件:每个文件中不得有重复行1. 取出两个文件的并集(重复的行只保留一份)2. 取出两个文件的交集(只留下同时存在于两个文件中的文件)3. 删除交集,留下其他的行1. c ...
- linux shell编程指南第十一章------------合并与分割2
c u t用来从标准输入或文本文件中剪切列或域.剪切文本可以将之粘贴到一个文本文件. 下一节将介绍粘贴用法. c u t一般格式为: cut [options] file1 file2 下面介绍其可用 ...
- LINUX 文件合并,去重
(1)两个文件的交集,并集前提条件:每个文件中不得有重复行1. 取出两个文件的并集(重复的行只保留一份)cat file1 file2 | sort | uniq > file32. 取出两个文 ...
- Linux中shell文件操作大全
1.创建文件夹#!/bin/shmkdir -m 777 "%%1" 2.创建文件#!/bin/shtouch "%%1" 3.删除文件#!/bin/shrm ...
- grunt配置太复杂?使用Qbuild进行文件合并、压缩、格式化等处理
上次简单介绍了下Qbuild的特点和配置,其实实现一个自动化工具并不复杂,往简单里说,无非就是筛选文件和处理文件.但Qbuild的源码也并不少,还是做了不少工作的. 1. 引入了插件机制.在Qbuil ...
- Windows上的文件合并命令
从Linux转到Windowns后,发现很多好用的shell命令都没有了,但实际情况是Windows一样有DOS时代的命令窗口,在CLI年代用DOS的人也要干活. 比如,今天想将几个单独的sql文件整 ...
随机推荐
- Debian sudo自动补全
解决 debian sudo TAB 键不能自动补全命令的原因 一般情况,命令行输入 sudo apt-get ins 按 tab ,它后面会自动补全为 install 如果右面写了包的名的一部分,按 ...
- CF851 D 枚举 思维
给出n个数,你可以对每个数把它变为0,或者增加1,分别需要花费x, y.问把所有数的GCD变为不为1的最小花费是多少. n的范围5x1e5,a[i]的范围1e6. 开始想通过枚举最终gcd值,然后通过 ...
- 「七天自制PHP框架」应用:Model外键链接
这里以行政区数据为例: 一级行政区数据范例: 二级行政区范例: 三级行政区范例: 在Model层建立三个Model class ProvinceModel extends Model{ public ...
- awk是全局周期
需要折行时需要用转译符,转译回车,回车是提交命令 \ 如果你的命令中有单引号也可以 awk 支持C语言 awk '{name[$1]=name[$1]+$2} END{f ...
- Java实现线性表-顺序表示和链式表示
顺序表示和链式表示的比较: 1.读写方式:顺序表可以顺序存取,也可以随机存取:链表只能从表头顺序存取元素: 2.逻辑结构与物理结构:顺序存储时,逻辑上相邻的元素其对应的物理存储位置也相邻:链式存储时, ...
- cms替换主页
cms替换主页的步骤 1.先做好静态页面: 2.在D:\wamp\www\phpcms\install_package\phpcms\templates文件夹下建新的文件夹tianqiwangluo( ...
- 下拉刷新和UITableView的section headerView冲突的原因分析与解决方案
UITableView:下拉刷新和上拉加载更多 [转载请注明出处] 本文将说明具有多个section的UITableView在使用下拉刷新机制时会遇到的问题及其解决方案. 工程地址在帖子最下方,只需要 ...
- $this->success传递数据
public function index_edit_doExport() { $search=$_POST['id']; $this->success(U('Tongji/index_edit ...
- lintcode 40. 用栈实现队列
使用两个栈来回倒腾可以实现队列. AC代码: import java.util.Stack; public class Queue { private Stack<Integer> sta ...
- VScode格式化ESlint
打开 文件-首选项- 设置 mac可以按快捷键(command和,) 然后在右上角的省略号选择open setting json { // vscode默认启用了根据文件类型自动设置tabsize的选 ...