- sort
- uniq
- paste
- join
- tr
- cut
1. sort
- 功能:排序
-u
: 去重
-r
: 降序
-o
: 重定向到原文件
-n
: 按数值排序
-t
: 设定分隔符,如果以制表符作为分隔符,写作 -t $'\t'
-k
: 设定列数
sort -k1 -k 2nr text.txt # 先按第一列排序,再按第二列的数值由大到小排序
sort -k 2nr # 根据第二列的数值大小降序排列
sort -t : -k3 # 以 : 为分隔符,并按第三列进行排序
$ cat a.txt
chr10
chr2
chr1
$ sort a.txt
chr1
chr10
chr2
$ sort -k 1.4n a.txt
chr1
chr2
chr10
-k 1.4n
即按第一列第4个字符到第一列最后的数值大小进行排序,-k 1.2,1.5nr
即按第一列第二个字符到第五个字符的数值大小进行降序。咱们平时都把小数点后和逗号后给省略了。
感谢 sort-根据染色体编号和坐标位置排序 让我增强了对 sort
的理解。
2. uniq
功能:检查及删除文本文件中重复出现的行,一般与sort命令结合使用
-c
: 在每列旁显示该行重复出现的次数
-d
: 仅显示重复出现的行,显示一行
-u
: 仅显示非重复的行
-i
: 忽略大小写
sort a.txt | uniq -c # 对相同的行进行去重,第一列为改行重复的次数
3. paste
- 功能:拼接,平时使用需要提前确定:列的顺序、数目相对应
-d
: 设定分隔符
-s
: 数据横置
$ cat a.txt
1
2
3
4
$ cat b.txt
x
y
z
$ paste a.txt b.txt
1 x
2 y
3 z
4
$ paste a.txt b.txt -d:
1:x
2:y
3:z
4:
$ paste a.txt b.txt -s
1 2 3 4
x y z
$ paste a.txt b.txt -d: -s
1:2:3:4
x:y:z
4. join
- 功能:联接
-1
、-2
: 分别代表从第一和第二个文件中指定关键字列,这两个选项都使用列号作为参数值
-a
: 显示未匹配到的行
$ cat 1.txt
gene1 TF
gene2 TF
gene3 TF
gene4
$ cat 2.txt
gene1 MYB
gene2 WD40
gene4
$ join 1.txt 2.txt #默认 -1 1 -2 1,即按第一列进行联接
$ join 1.txt 2.txt
gene1 TF MYB
gene2 TF WD40
gene4
$ join -a 1 1.txt 2.txt # -a 1 表示显示第一个文件中未匹配的行
gene1 TF MYB
gene2 TF WD40
gene3 TF
gene4
当有多列要进行联接的话,要用 -1 -2 选项和 sort -k 灵活使用该命令...
5. tr
- 全称:translate
- 功能:转换或者删除指定的字符,不能直接从文件中读取数据,只能从标准输入获取数据,并且将处理结果写到标准输出设备,我不常用这个命令
-s
: 压缩重复的字符
$ echo "abcddde" | tr -s "[a-z]" #
abcde
$ echo "abcDe" | tr "[:upper:]" "[:lower:]" # 大小写转换
abcde
$ echo "ATTTCG" | tr "ATCG" "TAGC"
TAAAGC
6. cut
- 功能:选择指定的文本列
-d
: 自定义列分隔符,默认值为制表符
-f
: 只选择列表中指定的文本列,文本列用列号表示,多个列之间用逗号隔开,连字符表示一段连续的列号
-b
: 截取字符
cut -d ":" -f 1,3,6-8,10- text.txt # 自定义分隔符为冒号,选择列数:1、3、6到8、10至末尾
cut -b 4- # 从第4个字符截取值末尾
网友评论