linux命令文件去重 linux命令文件重命名

linux去重命令linux去重命令是什么呢?
在介绍uniq命令之前,我们先来新建在下面的案例中需要用到的文件/tmp/uniq.txt , 内容如下
默认情况下uniq只会检索相邻的重复数据从而去重 。在/tmp/uniq.txt中虽然“onmpw web site” 有三条,但是其中一条是和其他两条不相邻的,所以只去重了一条,同理“error php function”也是这种情况 。
鉴于以上的检索机制,所以uniq一般情况下要和sort命令一块儿使用 。
复制代码
# sort 1.txt | uniq
alpha css web
cat linux command
error php function
hello world
onmpw web site
recruise page site
repeat no data
wello web site
复制代码
现在再看是不是所有的重复项都已经经过去重处理了 。
好了,小试牛刀一把以后,下面我们开始对uniq命令的选项进行简单的介绍 。
-c 统计每一行数据的重复次数
复制代码
sort 1.txt | uniq -c
1 alpha css web
1 cat linux command
2 error php function
1 hello world
3 onmpw web site
1 recruise page site
1 repeat no data
1 wello web site
复制代码
我们看 “error php function”出现了两次,“onmpw web site”出现了三次 。其余的都没有重复项所以为1 。
-i 忽略大小写
在1.txt中添加一行数据 “Error PHP function”
复制代码
cat 1.txt
alpha css web
cat linux command
error php function
hello world
onmpw web site
onmpw web site
wello web site
Error PHP function
recruise page site
error php function
repeat no data
onmpw web site
复制代码
复制代码
sort 1.txt | uniq –c
1 alpha css web
1 cat linux command
2 error php function
1 Error PHP function
1 hello world
3 onmpw web site
1 recruise page site
1 repeat no data
1 wello web site
复制代码
我们看结果,uniq默认是区分大小写的 。使用-i可以忽略掉大小写问题
复制代码
sort 1.txt | uniq –c –i
1 alpha css web
1 cat linux command
3 error php function
1 hello world
3 onmpw web site
1 recruise page site
1 repeat no data
1 wello web site
复制代码
现在再看是不是大小写已经忽略掉了 。
-u 只输出没有重复的数据
复制代码
sort 1.txt | uniq –iu
alpha css web
cat linux command
hello world
recruise page site
repeat no data
wello web site
复制代码
看到没,结果中的“error php function”和“onmpw web site”都没有被输出 。
-w N 表示从第一个字符开始只检索N个字符来判重 。
复制代码
sort 1.txt | uniq –iw 2
alpha css web
cat linux command
error php function
hello world
onmpw web site
recruise page site
wello web site
复制代码
这里我们让uniq只对前两个字符进行检索 , recruit 和 repeat前两个字符都是re , 所以这两行也被认为是重复的 。
-f N 表示略过前面N个字段,从第N 1个字段开始检索重复数据 。以空格符或者tab键为分隔符 。
复制代码
sort 1.txt | uniq –icf 2
1 alpha css web
1 cat linux command
3 error php function
1 hello world
4 onmpw web site
1 repeat no data
1 wello web site
复制代码
我们在结果中可以看到,这是略过前面的2个字段,从第三个字段开始判重的 。“recruise page site” 和 “onmpw web site”的第三个字段相同,所以被认为是相同的数据 。但是我们看到,“wello web site”和“onmpw web site”不但第三个字段相同,第二个也相同 。那为什么它不被计入“onmpw web site”的重复数据中呢 。对于这个问题就要回到前面说的,uniq只检测相邻的数据是否是重复的 。
要解决这个问题还需要在sort命令上着手 。还记得sort命令的-k选项吗,没错,我们就用它来解决 。
复制代码
sort –k 2 1.txt | uniq –icf 2
1 alpha css web
1 cat linux command
1 repeat no data
1 recruise page site
3 error php function
4 onmpw web site
1 hello world
复制代码
我们看,是不是解决了 。
-s N表示略过前面N个字符,关于这个选项的例子我们这里就不再举了,该选项和-f N的用法差不多 。只不过-f N是略过前面N个字段;-s是略过前面N个字符 。
-d 只输出有重复项的第一条的数据 。
sort 1.txt | uniq -idw 2
repeat no data
error php function
onmpw web site
结果只有这三条 。为什么会有“repeat no data”这条数据 , 这里注意-w 2的应用 。
-D 对于重复项全部输出
复制代码
sort 1.txt | uniq –iDw 2
repeat no data
recruise page site
error php function
error php function
Error PHP function
onmpw web site
onmpw web site
onmpw web site
复制代码
好了 , 关于uniq的选项的所有常用的命令已经都介绍完了 。关于uniq更详细的信息可以使用命令info uniq 。
每天一个linux命令(1)sortsort 是将文件的每一行作为一个单位 , 相互比较 , 比较原则是从首字符向后,依次按照ASCII码值进行比较,默认将他们按照升序输出
降序
在输出中去重
将排序结果输出到原文件
sort的默认输出是输出到标准输出,如果想把结果输出到文件 , 需要 sort filenewfile,但是如果想把结果输出到原文件这样就不行了,这时就需要 使用sort -o
以数值来排序
sort 默认是按照字符串排序的,这样就会出现10比3小的情况,sort -n 就可以告诉sort 以整数排序
-t 后面跟 分隔符
-k 后面跟数字,表示用第几列排序
如 sort -t : -k 2 表示把每行 以:号分割 , 按照第二列排序
banana:30:5.5
orange:20:3.4
apple:10:2.5
我们可以看到 , 当baidu 和soho都是100的时候,baidu排在前面,当当前域按照默认规矩,是从第一个域开始进行升序排序,因此baidu排在了sohu前面 。
sort 支持 -k 2 -k3这种模式,如果你需要,你可以继续这么写下去
你仔细看看,在-k 3后面偷偷加上了一个小写字母r,r和-r的作用是一样,你也可以把前面的-n去掉 在r后面加上n,如下
其实-k 选项 功能很强大,语法[ FStart [ .CStart ] ] [ Modifier ] [ , [ FEnd [ .CEnd ] ][ Modifier ] ]
从逗号前后 分为两大部分,即-k 2,2,是严格使用第一个域排序 , 如果只设置-k 2 其实是按照从第一个域到行尾 。逗号分开的每部分又有一个点表示子域,即-k 1.2表示 按照第一个域的第二个字符排序,Modifiers就是我们用到的n和r如 -k 1.2nr具体我们看下面的例子 。
我们使用了-k 1.2,这就表示对第一个域的第二个字符开始到本域的最后一个字符为止的字符串进行排序 。你会发现baidu因为第二个字母是a而名列榜首 。sohu和 google第二个字符都是o,但sohu的h在google的o前面 , 所以两者分别排在第二和第三 。这和之前说到的按照默认的排序规则 是不同的,当第一个域的第二个字符相同时,他不会去按照第一个字符排序,而是按照后面的字符排序,这是因为-k 1.2是对第一个域的第二个字符开始到本域的最后一个字符为止的字符串进行排序 。而之前的夸域其实是一种假象 。
-u只识别用-k设定的域,发现相同,就将后续相同的行都删除
但是这时候 , 却一行也没有删除 。原来-u是会权衡所有-k选项,将都相同的才会删除,只要其中有一级不同都不会轻易删除的
可以用到b、d、f、i、n 或 r 。
其中n和r你肯定已经很熟悉了 。
b表示忽略本域的签到空白符号 。
d表示对本域按照字典顺序排序(即,只考虑空白和字母) 。
f表示对本域忽略大小写进行排序 。
i表示忽略“不可打印字符” , 只针对可打印字符进行排序 。(有些ASCII就是不可打印字符,比如\a是报警,\b是退格,\n是换行,\r是回车等等)
linux命令对某一列去重/统计cat file.csv | awk -F '\t' '{print $2}'
'\t'指linux命令文件去重的是file.csv不同列以'\t'分割linux命令文件去重,如果linux命令文件去重的是以其他符号分割,换成其她符号;
'{print $2}'是指取第2列,此处从1开始计数,第1列,第2列;
一般去重之前要进行排序
cat file.csv | awk -F '\t' '{print $2}' | sort | uniq
前半部分与命令1一样,后面加上| sort | uniq
比如通过命令2发现,第2列取值有两种,分别是'neg'和‘pos’,那么linux命令文件去重我想知道有多少行的第2列取值为'pos' , 多少行的第2列取值为'neg' 。
cat file.csv | awk -F '\t' '{print $2}' | grep -o 'neg'| wc -l
前半部分与命令1一样,后面加上 | grep -o 'neg'| wc -l
grep -o 'neg'就是取出取值为'neg'的行
wc -l 是计数有多少行
Linux文本操作常用命令在Linux系统里常用于文本查看、操作、统计的命令:
通过多敲键盘,形成手感 肌肉记忆 , 熟练掌握这些命令,在以后生信分析中游刃有余 。以下是每个命令的详细的介绍(主要是跟着 生信技能树小郭老师 学习做的笔记)
接下来通过示例把10个命令的常用参数和用法展示出来:
参数的用法介绍:
注意事项:
用 cat 命令可以 查看文本 ,也可以 编辑文本 ,编辑文本要加符号,退出时,另起一行,按 control C 退出
zcat可以查看压缩的文本文件,tac逆向查看
结合管道符|使用
head / tail-n:查看文件的前 / 后 n 行,默认10行 (在R语言里head和tail默认是前6行) 。
less命令用得最多,more命令用得比较少
3.1less命令
less[参数]文件名
less命令重要的补充用法1 :
需要注意 退出 :只要使用less命令,按q键
less命令重要的补充用法2 :
参数用法:
less命令 不加参数 查看文件:
less命令加 -N参数 查看文件:显示行号
less命令加 -S参数 查看文件:单行显示,非常规整
对比:less和cat命令显示文本行号的用法:less -N,cat -n
3.2more命令
**more **逐页查看 , 按空格翻页,按回车换行 , more命令一般很少用,熟练掌握less命令就好
查看压缩文件
wc 统计字符是也把换行符统计进去,但是别的命令不一定会把换行符算进去,。
常见参数:
切记:用less命令,按q退出
cut命令是按关键词来切的
常见参数:
排列前:
排列后:
解释:1和0比 , 1大;7和0比,7大…在sort字典排序里,100816比1737?。?所以100816排在前面 。
命令行查看一个表格结构时,因为制表符对齐的原因 , 出现一个错位的现象 。还有 字典排序 可能和我们平时的认知不一样,所以 加上-n参数 , 让数值有数学意义上的大小来排序。
uniq命令去重,只有两行出现重复,而且是相邻的两行 , 如果不相邻,即使出现两行一模一样,不会去重 。
uniq命令通常和sort命令搭配使用
换其它文件试试
总之,uniq命令使用时经常和sort一起
常见参数:
常见用法1:
pastefile1 file2
-s:按行合并 演示
常见用法2:paste--
常见参数:
要养成一个好习惯 , 原始数据不要轻易修改,修改的东西另外保存,文本保存用 (重定向)或是(追加)
1.用less查看example.gtf,然后管道符传递给wc
2.截取example.gtf第9列的内容
3.在第2步的基础上截取分号分割的第1列
4.在第3步的基础上排序、去重复并统计
5.在第4步的基础上,将空格替换成制表符
补充小知识 :
清屏 :controlL
查看历史(输入过的)命令 :history
Linux里面uniq -c命令作用是什么?uniq 对排序好的内容进行去重
-c 显示输出中,在每行行首加上本行在文件中出现的次数 。
【linux命令文件去重 linux命令文件重命名】关于linux命令文件去重和linux命令文件重命名的介绍到此就结束了 , 不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

    推荐阅读