美文网首页
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