逗号分隔去重_Linux练习7: 文本统计、切割、排序去重、合并替换

参考:生信技能树

c9a21ccd490a5ba74b670ec6c35250fa.png

统计readme.txt             wc readme.txt

5行, 29单词, 206个字符

d2bad3a0b6b6667ecec1fb19cf89b0f4.png

配合管道符|          wc -l 只统计行数

6ff51e349c96b29fb4de95a73cb49a7e.png

04031f4d037940d81f137bde70603a55.png

取出Data目录下example.gtf文件, 

管道符传递 |,

文本切割,输出列-f, 第1列和3到5列:

less -S Data/example.gtf  | cut -f 1,3-5

1bc981958f5599f0d878b19aa4be7831.png

取出Data目录下example.gtf文件, 

管道符传递 |,

文本切割,分隔符是'h',切开后 取出第一列:

less -S Data/example.gtf  | cut -d 'h' -f 1 

第一列如chr1, 按h切开是 c 和r1,取第一列,得到c

d8102a710602324ef3f8390e1b71a910.png

2463aeb412e1ff9c0fbaf34e32ecbedd.png

取出Data目录下example.gtf文件, 

管道符传递 |,

sort排序,指定按第3列排序,

管道符传递 |,

less -S 单行显示:

less -S Data/example.gtf | sort -k 3 | less -S

6d4984aa226109856d9c9bde4ed22e8c.png

显示效果

9688c2693797d7fcf41874bd51c2d426.png

如果对第4列排序

f0a423e2d52f5685f20ccb8441a4be19.png

会有问题,它是按字典顺序排的,不是按数字大小

需要写成

less -S Data/example.gtf | sort -n -k 3 | less -S

1133a711ac777022be144c42ce48ea69.png

27b658e1fca16b990cd5bc5691d3332a.png

有个bug,只能去相邻两行重复, 如第1,2,4相同,第4行去不掉

所以经常搭配sort排序使用, 把重复行排在一起,再去重

查看example.gtf文件第3列, sort排序 (默认升序):

less -S Data/example.gtf | cut -f 3 | sort

11a5334d31cb615ce3395314d05732cb.png

再去重

less -S Data/example.gtf | cut -f 3 | sort | uniq

如果想要统计重复次数

less -S Data/example.gtf | head -10 | cut -f 3 | sort | uniq -c

510e9e7ec700634653c7931f18b57ee5.png

注意:不排序,去重就去不干净

f9e2bb4b056628492d650afefbb6a0ce.png

先创建一个file文件

a0f03e2a3034df2b8c0d2a5ef66e8984.png

合并 file 和 readme.txt

paste file readme.txt  (之间制表符)

两个文件行数不一样,不会像R一样循环补齐

01561c778dfc28a8add68b975240ced8.png

按分隔符.合并

paste -d '.' file readme.txt  

a9c4fad0a0245fd1b11888ee3af08fff.png

-s参数 按行合并

7a30eb9a1a914872b101cdc0a30680ad.png

paste - - 用法

新建一个file,是1到10      seq 10 >file

5c1a622780755d2c33d4075ce3d1f004.png

paste - -          形成2列,横向填充

paste - - -       形成3列,横向填充

9f9cfe37ff0492393dc900cfde64c9f2.png

49f64aadbfea8b2bb19c8d6155a3bb61.png

把a替换成A       tr  'a'  'A'

8f49e89d70edf780bf1cfbedec29c14d.png

-d删除指定字符 (说是用的少,有更推荐的其他命令)

8a8ed84c9c23775fa8cf6aed1ae61706.png

注意:上面我们都是修改打印到屏幕上文本, 用cat,所以源文件并没有修改

练习7

1。用 less 查看 example.gtf,然后管道符传递给wc 

wc是统计

1224471f0209eed3288a59b08d88373b.png

2。截取 example.gtf 第 9 列的内容 

less -S Data/example.gtf   |  cut -f 9  |  less -S

b6156f9b9bc7eb73c68f7ada03e313b8.png

3。在第2步的基础上截取分号分割的第1列

less -S Data/example.gtf   |  cut -f 9  | cut -d ';' -f  1

按';'分割  cut -d ';'

取第1列    -f  1

5e5430a37f758c4fc5a49b07e288a458.png

4。在第3步的基础上排序、去重复并统计

less -S Data/example.gtf   |  cut -f 9  | cut -d ';' -f  1  | sort

排序后相同行就排在了一起

b2c340211b67e2b8c9ad5dce6e2f966f.png

接着去重,顺便统计一下

less -S Data/example.gtf   |  cut -f 9  | cut -d ';' -f  1  | sort| uniq -c

7a170fd4202fc822eb6e53fc193621e5.png

5。在第4步的基础上,将空格替换成制表符 \t

less -S Data/example.gtf   |  cut -f 9  | cut -d ';' -f  1  | sort | uniq -c | tr ' '  '\t'

替换tr

8c9b4ac2d8d90a389c5b402b0ce5cd2a.png

e9561f7b08b1df1bb2520343e6ecddd1.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值