sort 是将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按照ASCII码值进行比较,默认将他们按照升序输出
降序
在输出中去重
将排序结果输出到原文件
sort的默认输出是输出到标准输出,如果想把结果输出到文件,需要 sort file newfile,但是如果想把结果输出到原文件这样就不行了,这时就需要 使用sort -o
以数值来排序
-t 后面跟 分隔符
-k 后面跟数字,表示用第几列排序
我们可以看到,当baidu 和soho都是100的时候,baidu排在前面,当当前域按照默认规矩,是从第一个域开始进行升序排序,所以呢baidu排在了sohu前面.
其实-k 选项 功能很强大,语法[ FStart [ .CStart ] ] [ Modifier ] [ , [ FEnd [ .CEnd ] ][ Modifier ] ]
-u只识别用-k设定的域,发现相同,就将后续相同的行都删除
但是这时候,却一行也没有删除.原来-u是会权衡所有-k选项,将都相同的才会删除,只要其中有一级不同都不会轻易删除的
可以用到b、d、f、i、n 或 r.
其中n和r你肯定已经很熟悉了.
b表示忽略本域的签到空白符号.
d表示对本域按照字典顺序排序(即,只考虑空白和字母).
f表示对本域忽略大小写进行排序.
i表示忽略"不可打印字符",只针对可打印字符进行排序.(有些ASCII就是不可打印字符,比如\a是报警,\b是退格,\n是换行,\r是回车等等)
在Linux系统里常用于文本查看、操作、统计的命令:
通过多敲键盘,形成手感 肌肉记忆 ,熟练掌握这些命令,在以后生信分析中游刃有余.以下是每个命令的详细的介绍(主要是跟着 生信技能树小郭老师 学习做的笔记)
此时此刻呢通过示例把10个命令的常用参数和用法展示出来:
参数的用法介绍:
注意事项:
zcat可以查看压缩的文本文件,tac逆向查看
结合 管道符| 使用
less命令用得最多 ,more命令用得比较少
less [参数] 文件名
less命令重要的补充用法1 :
需要注意 退出 :只要使用less命令, 按q键
参数用法:
less命令 不加参数 查看文件:
less命令加 -N参数 查看文件:显示行号
less命令加 -S参数 查看文件:单行显示,非常规整
对比:less和cat命令显示文本行号的用法:less -N,cat -n
**more ** 逐页查看,按空格翻页,按回车换行 ,more命令一般很少用,熟练掌握less命令就好
查看压缩文件
wc 统计字符是也把换行符统计进去,但是别的命令不一定会把换行符算进去,.
常见参数:
切记:用less命令,按q退出
cut命令是按关键词来切的
排列前:
排列后:
命令行查看一个表格结构时,因为制表符对齐的原因,出现一个错位的现象.还有 字典排序 可能和我们平时的认知不一样,所以 加上-n参数 , 让数值有数学意义上的大小来排序 .
uniq命令去重,只有两行出现重复,而且是相邻的两行,如果不相邻,即使出现两行一模一样,不会去重.
uniq命令通常和sort命令搭配使用
换其它文件试试
都说到这里了大家应该明白,uniq命令使用时经常和sort一起
常见用法1:
-s :按行合并 演示
要养成一个好习惯,原始数据不要轻易修改,修改的东西另外保存,文本保存用 (重定向)或是 (追加)
① 用 less 查看 example.gtf ,然后管道符传递给 wc
补充小知识 :
清屏 :control L
查看历史(输入过的)命令 :history
linux重命名文件和文件夹可以使用mv命令来实现.
mv命令:
Linux mv 命令用来为文件或目录改名、或将文件或目录移入其它位置.
实例:
比如:before.txt是修改之前的文件名,after.txt是准备修改的文件名.
命令为:
注意:如果当前目录下也有个after.txt的文件的话,我们的这个文件是会将它覆盖的.
mv命令也可以移动文件和文件夹,例如将/a目录移动到/b下,并重命名为c.
文件 test.log json文件数据
根据 data.ext.uid 字段排序
使用 jq 去重数据,并只显示 data.ext.uid 字段
多维度去重
'\t'指的是file.csv不同列以'\t'分割,如果的是以其他符号分割,换成其她符号;
一般去重之前要进行排序
前半部分与命令1一样,后面加上| sort | uniq
前半部分与命令1一样,后面加上?|?grep -o 'neg'| wc -l
grep -o 'neg'就是取出取值为'neg'的行
wc -l 是计数有多少行
利用linux命令行进行文本按行去重并按重复次数排序linux命令行提供了非常强大的文本处理功能,组合利用linux命令能实现好多强大的功能.本文这里举例说明如何利用linux命令行进行文本按行去重并按重复次数排序.主要用到的命令有sort,uniq和cut.其中,sort主要功能是排序,uniq主要功能是实现相邻文本行的去重,cut可以从文本行中提取相应的文本列(简单地说,就是按列操作文本行).用于演示的测试文件内容如下:[plain]Hello
World.
Apple
and
Nokia.
Hello
I
wanna
buy
an
device.
The
Iphone
of
company.
My
name
is
Friendfish.
实现命令及过程如下:[plain]1、文本行去重
(1)排序
由于uniq命令只能对相邻行进行去重复操作,所以在进行去重前,先要对文本行进行排序,使重复行集中到一起.
$
sort
test.txt
|
uniq
(1)首先,对文本行进行去重并统计重复次数(uniq命令加-c选项可以实现对重复次数进行统计.).
-c
-n可以识别每行开头的数字,并按其大小对文本行进行排序.默认是按升序排列,如果想要按降序要加-r选项(sort
-rn).
-rn
cut
下面附带说一下cut命令的使用,用法如下:[plain]cut
-b
list
[-n]
[file
...]
-f
[-d
delim][-s][file
上面的-b、-c、-f分别表示字节、字符、字段(即byte、character、field);
list表示-b、-c、-f操作范围,-n常常表示具体数字;
file表示的自然是要操作的文本文件的名称;
delim(英文全写:delimiter)表示分隔符,默认情况下为TAB;
-s表示不包括那些不含分隔符的行(这样有利于去掉注释和标题)
三种方式中,表示从指定的范围中提取字节(-b)、或字符(-c)、或字段(-f).
范围的表示方法:
n
只有第n项
n-
从第n项一直到行尾
n-m
从第n项到第m项(包括m)
-m
从一行的开始到第m项(包括m)
-
从一行的开始到结束的所有项
在写这篇文章的时候,用到了vim的大小写转化的快捷键:gu变小写,gU变大写.结合ctrl+v能够将一片文字中的字符进行大小写转换,非常好用.
以上就是土嘎嘎小编为大家整理的linux命令文件去重相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!