美文网首页生物信息学Linux
Shell笔记之常用工具

Shell笔记之常用工具

作者: 秋慕云 | 来源:发表于2020-04-14 21:54 被阅读0次

    1.cut

    在文件中负责剪切数据用。cut命令从文件中的每一行剪切字节、字符和字段并将这些字节、字符和字段输出

    基本用法:
    cut [选项参数] filename

    说明:默认分隔符是制表符

    选项参数说明:
    -f 列号,提取第几列
    -d分隔符,按照指定分隔符分隔列

    例子:

    • cut -d " " -f 1 cut.txt
      根据空格切割 cut.txt 文件的第一列

    • cut -d " " -f 1,2 cut.txt
      根据空格切割cut.txt文件的第一、二列

    • 切割文件中的某个关键字:
      cat cut.txt | grep "hello" | cut -d " " -f 1
      注意:第一个是cat不是cut,意思是截取cut.txt文件中hello的字段 然后根据空格截取第一列

    • 截取系统PATH变量值,第2个“:”开始后的所有路径
      测试数据:
      /Users/zhangsheng1/Project/Java/apache-maven-3.3.9/bin:/Users/zhangsheng1/Project/Java/jdk1.8.0_192.jdk/Contents/Home/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
      echo $PATH | cut -d : -f 3-
      注意:3之后还有一个【-】,代表第二个“:”号之后所有的路径,如果不带【-】,只剪出第3列的内容

    带【-】结果:
    /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
    不带【-】结果:
    /usr/local/bin

    2.sed

    一种流编辑器,一次处理一行内容,处理时,把当前处理行的内容存储在临时缓冲区,即,模式空间,接着用sed命令处理缓冲区中的内容,处理完成后把缓冲区的内容推送到屏幕。接着处理下一行数据,以此往复,直到文件末尾。文件内容不会改变。

    基本用法:
    sed[选项参数] ‘command’ filename

    选项参数:
    -e : 直接在指令列模式上进行sed的动作编辑

    命令功能描述:
    a: 新增,a的后面可以接字符串,在下一行出现
    d: 删除
    s: 查找并替换

    例子:

    sed "2a mei nv" sed.txt // 将mei nv插入到sed.txt的第二行下面,只是打印上会加入一行mei nv,但是原来的set.txt通过vim命令查看的话并没有新增一行记录,还是之前的记录

    sed "/wo/d" sed.txt //删除所有wo的记录,同样,只是会在打印上删除原来的wo,并不会真正的修改原来的文件

    sed "s/wo/ni/g" set.txt //查找所有的wo,将wo替换成ni。g代表全局的意思,如果不加g,则代表只替换第一个wo.同样不会修改原文件sed.txt中的内容

    sed -e "2d" -e "s/wo/ni/g" set.txt //删除sed.txt文件中的第二行,并将wo替换为ni

    3.awk

    一个强大的文本分析工具,把文件逐行读入,以空格为默认分隔符将每行进行切片,切开的部分再进行处理

    基本用法:
    awk[选项参数] 'pattern1 {action1} pattern2{action2} ……' filename

    说明:
    pattern: 表示AWK在数据中查找的内容,就是匹配模式
    action: 对找到的内容进行的一系列命令

    选项参数:
    -F:指定输入文件分隔符
    -v:赋值一个用户定义变量

    举例:
    数据: root:x:0:0:root:/root:/bin/bash
    文件: awk.txt

    要求1: 找出awk文件中以root开头的所有行,并输出第七列
    命令1: awk -F : '/^root/ {print $7}' awk.txt

    要求2:找出awk文件中以root开头的所有行,并输出第一列和第七列,中间以逗号分隔
    命令2: awk -F : '/^root/ {print 1","7}' awk.txt

    要求3: 查处awk文件中所有空行所在的行号
    命令3: awk '/^$/ {print NR}' awk.txt

    要求4:有如下格式的文件:
    zhangsan 50
    lisi 60
    wangwu 40
    求出第二列的和并输出

    命令4:cat interview.txt | awk -F " " '{sum += $2} END{print sum}'

    4.sort

    将文件进行排序

    基本语法:
    sort(选项)(参数)

    选项:
    -n : 按照数值的大小进行排序
    -r : 以相反的顺序来进行排序
    -t : 设置排序时所用的分隔符
    -k : 指定需要排序的列

    举例:
    有如下格式数据:
    bb:40:5.4
    bd:20:4.2
    xz:50:2.3
    cls:10:3.5
    ss:30:1.6

    要求:
    按照“:”分隔,并按照第二列进行倒排
    命令: sort -t : -nrk 2 sort.sh

    相关文章

      网友评论

        本文标题:Shell笔记之常用工具

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