Shell文件的排序、合并和分割
2017-06-15 20:27
218 查看
sort
sort [option] inputfile选项及其意义:
option | desc |
---|---|
-b | 忽略每行前面开始出的空格字符; |
-c | 检查文件是否已经按照顺序排序; |
-d | 排序时,处理英文字母、数字及空格字符外,忽略其他的字符; |
-f | 排序时,将小写字母视为大写字母; |
-i | 排序时,除了040至176之间的ASCII字符外,忽略其他的字符; |
-m | 将几个排序号的文件进行合并; |
-M | 将前面3个字母依照月份的缩写进行排序; |
-n | 依照数值的大小排序; |
-o<输出文件> | 将排序后的结果存入制定的文件; |
-r | 以相反的顺序来排序; |
-t<分隔字符> | 指定排序时所用的栏位分隔字符;默认是空格符 |
+<起始栏位>-<结束栏位> | 以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。 |
-k\< num > | 指定排序域。1表示第一域,2表示第二域。 |
-u | 对结果进行去重 |
sort -t: -k3n inputfile
-k的使用
-k选项的语法格式:
FStart.CStart Modifie,FEnd.CEnd Modifier -------Start--------,-------End-------- FStart.CStart 选项 , FEnd.CEnd 选项
这个语法格式可以被其中的逗号,分为两大部分,Start部分和End部分。Start部分也由三部分组成,其中的Modifier部分就是我们之前说过的类似n和r的选项部分。我们重点说说Start部分的FStart和C.Start。C.Start也是可以省略的,省略的话就表示从本域的开头部分开始。FStart.CStart,其中FStart就是表示使用的域,而CStart则表示在FStart域中从第几个字符开始算“排序首字符”。同理,在End部分中,你可以设定FEnd.CEnd,如果你省略.CEnd,则表示结尾到“域尾”,即本域的最后一个字符。或者,如果你将CEnd设定为0(零),也是表示结尾到“域尾”。
e.g.
#从公司英文名称的第二个字母开始进行排序 $ sort -t ' ' -k 1.2 facebook.txt baidu 100 5000 sohu 100 4500 google 110 5000 guge 50 3000 #只针对公司英文名称的第二个字母进行排序,如果相同的按照员工工资进行降序排序 $ sort -t ' ' -k 1.2,1.2 -nrk 3,3 facebook.txt baidu 100 5000 google 110 5000 sohu 100 4500 guge 50 3000
uniq
uniq [option] inputfile选项及其意义:
option | desc |
---|---|
-c或——count | 在每列旁边显示该行重复出现的次数; |
-d或–repeated | 仅显示重复出现的行列; 每个记录仅显示一次 |
-f<栏位>或–skip-fields=<栏位> | 忽略比较指定的栏位; |
-s<字符位置>或–skip-chars=<字符位置> | 忽略比较指定的字符; |
-u或——unique | 仅显示出不重复的行列; |
-w<字符位置>或–check-chars=<字符位置> | 指定要比较的字符。 |
e.g.
uniq 与 sort -u的区别
sort -u所有的重复行都会被去除。uniq 去除的重复行必须是连续出现的。
join
join [option] file1 file2选项及其意义:
option|desc
-|-
-a<1或2>:除了显示原来的输出内容之外,还显示指令文件中没有相同栏位的行; 相当于left join ,right join
-e<字符串>:若[文件1]与[文件2]中找不到指定的栏位,则在输出中填入选项中的字符串;
-i或–ignore-case:比较栏位内容时,忽略大小写的差异;
-o<格式>:按照指定的格式来显示结果;
-t<字符>:使用栏位的分割字符;
-v<1或2>:更-a相同,但是只显示文件中没有相同栏位的行;
-1<栏位>:连接[文件1]指定的栏位; -2<栏位>:连接[文件2]指定的栏位。
-a与-v的区别:
-a显示显示匹配的记录。-v不显示匹配的记录。
-o
join默认显示2个文件中的所有域,-o用于改变显示结果。
bash #显示2个文件的前2列 join -t: -o1.1 1.2 2.1 2.2 file1
-1,-2
join默认指定2个文件的第一个域进行join,-1,-2指定2个文件进行join的域
cut
cut用于从标准输入或文件中按域或行提取数据。cut [option] file
选项及其意义:
option | desc |
---|---|
-c | 指定提取的字符数或字符范围 |
-f | 指定提取的域数或域范围 |
-d | 改变域分割符 |
-cn :第n个字符
-cn,m :第n,m个字符
-cn-m :第n至m个字符
-f格式与-c一样
paste
paste将标准输入或文件中的内容粘贴到新的文件。多个文件按列对列进行粘贴paste [option] inputfile outfile
选项及其意义:
option | desc |
---|---|
-s | 每个文件粘贴为一行,默认按列粘贴 |
- | 从标准输入中读取文件 |
-d | 改变域分割符,默认是空格或tab |
#每行显示5个文件 ls | past -d“ ” - - - - -
split
用于切割文件split [option] input output
选项及其意义:
option | desc |
---|---|
-或-l | 用于指定文件切割的行数 |
-b | 用于文件切割的大小,单位字节 |
-C | 同-b,但切割时尽量保持每行的完整性 |
-d | 使用数字作为后缀 |
-a | 指定后缀长度,-a 3,长度为3 |
tr
tr实现字符转换tr [option] 字符串1 字符串2 输入文件
选项及其意义:
option | desc |
---|---|
-c | 选定字符串1中的补集,即反选字符串1中的补集 |
-d | 删除字符串1中的所有字符 |
-s | 删除所有重复出现的字符序列,只保存1个 |
#删除所有大写字母 tr -s A-Z file
tr支持部分正则表达式,例如A-Z 0-9 A*3,tr支持POSIX字符以及控制字符
标记 | 速记符 | 含义 | 八进制方式 |
---|---|---|---|
\a | Ctrl-G | 铃声 | \007 |
\b | Ctrl-H | 退格符 | \010 |
\f | Ctrl-L | 走行换页 | \014 |
\n | Ctrl-J | 新行 | \012 |
\r | Ctrl-M | 回车 | \015 |
\t | Ctrl-I | tab键 | \011 |
\v | Ctrl-X | \030 |
tar
tar [-cxtzjvfpPN] 文件与目录 ….-c:建立一个压缩文件的参数指令(create 的意思);
-x:解开一个压缩文件的参数指令!
-t:查看 tarfile 里面的文件!
-r:向压缩归档文件末尾追加文件
-u:更新原压缩包中的文件
这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个.
特别注意,在参数的下达中, c/x/t/r/u 仅能存在一个!不可同时存在!因为不可能同时压缩与解压缩。
-z:有gzip属性,即需要用 gzip 压缩 -j:有bz2属性,即需要用 bzip2 压缩 -Z:有compress属性的 -v :压缩的过程中显示文件(显示所有过程)!这个常用,但不建议用在背景执行过程! -O:将文件解开到标准输出 -f :使用档名,请留意,在 f 之后要立即接档名!不要再加参数!例如使用『 tar -zcvfP tfile sfile』就是错误的写法,要写成『 tar -zcvPf tfile sfile』才对喔! -p :使用原文件的原来属性(属性不会依据使用者而变) -P :可以使用绝对路径来压缩! -N :比后面接的日期(yyyy/mm/dd)还要新的才会被打包进新建的文件中! --exclude FILE:在压缩的过程中,不要将 FILE 打包! -f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。 # tar -cf all.tar *.jpg 这条命令是将所有.jpg的文件打成一个名为all.tar的包。-c是表示产生新的包,-f指定包的文件名。 # tar -rf all.tar *.gif 这条命令是将所有.gif的文件增加到all.tar的包里面去。-r是表示增加文件的意思。 # tar -uf all.tar logo.gif 这条命令是更新原来tar包all.tar中logo.gif文件,-u是表示更新文件的意思。 # tar -tf all.tar 这条命令是列出all.tar包中所有文件,-t是列出文件的意思 # tar -xf all.tar 这条命令是解出all.tar包中所有文件,-x是解开的意思
1、*.tar 用 tar –xvf 解压
2、*.gz 用 gzip -d或者gunzip 解压
3、.tar.gz和.tgz 用 tar –xzf 解压
4、*.bz2 用 bzip2 -d或者用bunzip2 解压
5、*.tar.bz2用tar –xjf 解压
6、*.Z 用 uncompress 解压
7、*.tar.Z 用tar –xZf 解压
rev
rev命令将文件中的每行内容以字符为单位反序输出,即第一个字符最后输出,最后一个字符最先输出,依次类推colrm
colrm命令用于删除文件中的指定列。colrm命令从标准输入设备读取数据,转而输出到标准输出设备。如果不加任何参数,则colrm命令不会过滤任何一行。colrm 开始列号 结束列号 < file
相关文章推荐
- shell:文件的排序、合并和分割
- shell 文件排序合并和分割
- 第五章 shell学习之文件的排序、合并和分割
- shell基础11:文件分类、合并和分割(sort,uniq,join,cut,paste,split)
- Linux文件的合并、排序和分割
- Linux基本操作 8----- 文件的排序+分割+合并+归档等
- shell基础11:文件分类、合并和分割(sort,uniq,join,cut,paste,split)
- “Linux文件的合并、排序和分割” 之 sort 命令详解
- shell基础11:文件分类、合并和分割(sort,uniq,join,cut,paste,split)
- “Linux文件的合并、排序和分割” 之 cut 命令
- 用java实现大文件分割、排序、合并
- 【shell命令】拆分、合并、排序、比较文件
- “Linux文件的合并、排序和分割” 之 paste 命令
- Linux Shell编程第5章——文件的排序、合并和分割
- “Linux文件的合并、排序和分割” 之 uniq 命令
- 文件的合并排序与文件分割
- Linux文件的合并、排序和分割
- 【shell命令】拆分、合并、排序、比较文件
- “Linux文件的合并、排序和分割” 之 split 命令
- “Linux文件的合并、排序和分割” 之 join 命令