美文网首页
Shell | 文件内容处理

Shell | 文件内容处理

作者: shwzhao | 来源:发表于2021-02-01 20:40 被阅读0次
  1. sort
  2. uniq
  3. paste
  4. join
  5. tr
  6. 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个字符截取值末尾

相关文章

网友评论

      本文标题:Shell | 文件内容处理

      本文链接:https://www.haomeiwen.com/subject/hmyoiktx.html