Shell基础知识讲解(8)工具

工具

10.1 cut

cut的工作就是‘剪’,具体的就是在文件中负责剪切数据用的,cut命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段输出。

  • 基础用法

    cut [参数] filename
    
  • 参数说明

    参数功能
    -f列号,提取第几列数据
    -d分隔符,按照指定分隔符分割列
  • 案例操作

    #数据准备
    touch cut.txt
    vim cut.txt
    #######################################
    dong xie xi du
    yi tian tu long ji
    zhang san feng
    guo jing
    huang rong
    #######################################
    
    #切割第一列数据
    cut -d " " -f 1 cut.txt
    #######################################
    dong
    yi
    zhang
    guo
    huang
    #######################################
    
    #切割第2、3列数据
    cut -d " " -f 2,3 cut.txt
    #######################################
    xie xi
    tian tu
    san feng
    jing
    rong
    #######################################
    
    #切割yi数据
    cut cut.txt | grep yi | cut -d " " -f 1
    #######################################
    yi
    #######################################
    
    #选取PATH变量值,第二个‘:’后的所有值
    echo $PATH | cut -d ":" -f 2-
    ###########################################
    /usr/local/bin:/usr/sbin:/usr/bin:/root/bin
    ###########################################
    
    #切割ifconfig后打印ip
    ifconfig eth0 | grep "inet" | cut -d " " -f 10
    

    注意:以上代码仅供参考,具体可依据系统自己调试

10.2 sed

sed 是一种流编辑器,它一次处理一行内容,处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”,接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕,接着处理下一行,这样不断重复,直到文件末尾,文件内容并没有改变,除非你使用重定向存储输出。

  • 基础语法

    sed [参数] ‘command’ filename
    
  • 参数说明

    参数功能
    -e直接在指令列模式上进行sed的动作编辑
  • 命令描述

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

    #数据准备
    touch sed.txt
    vim sed.txt
    ########################################################
    dong xie xi du
    yi tian tu long ji
    zhang san feng
    guo jing
    huang rong
    ########################################################
    
    #将‘lao du wu’放到第一行后边
    sed '1a lao du wu' sed.txt
    ########################################################
    dong xie xi du
    lao du wu
    yi tian tu long ji
    zhang san feng
    guo jing
    huang rong
    ########################################################
    
    #删除包含‘guo’的行
    sed '/guo/d' sed.txt
    ########################################################
    dong xie xi du
    yi tian tu long ji
    zhang san feng
    huang rong
    ########################################################
    
    #将‘guo’替换成'wo'
    sed 's/guo/wo/g' sed.txt
    ########################################################
    dong xie xi du
    yi tian tu long ji
    zhang san feng
    wo jing
    huang rong
    ########################################################
    
    #删除第二行并将‘guo’替换成'wo'
    sed -e '2d' -e 's/guo/wo/g' sed.txt
    ########################################################
    dong xie xi du
    zhang san feng
    wo jing
    huang rong
    ########################################################
    

10.3 awk

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

  • 基本语法

    awk [选项参数] 'pattern1{action1} pattern2{action2} ...' filename
    # pattern:表示awk在数据中查找的内容,就是匹配模式
    # action:在找到匹配内容时所执行的一系列命令
    
  • 选项参数说明

    参数功能
    -F指定输入文件拆分隔符
    -v赋值一个用户定义变量
  • 案例操作

    #数据准备
    sudo cp /etc/passwd ./
    #改变所属用户
    sudo chown fyy:fyy  passwd
    #搜索passwd文件以root关键字开头的所有行,并输出该行第7列
    awk -F : '/^root/ {print $7}' passwd 
    #####################
    /bin/bash
    #####################
    #搜索passwd文件以root关键字开头的所有行,并输出该行第1列、第7列,以‘,’分隔
    awk -F : '/^root/ {print $1","$7}' passwd
    #####################
    root,/bin/bash
    #####################
    
    #搜索passwd第1列、第7列,以','分隔,开头加上'user',结尾加上'end'
    awk -F : 'BEGIN{print "user,"} {print $1","$7} END{print "end"}' passwd
    
    #将passwd文件中的用户id增加数值1并输出
    awk -v i=1 -F : '{print $3+i}' passwd
    
    
    
  • awk的内置变量

    变量说明
    FILENAME文件名
    NR已读的记录数
    NF浏览记录的域的个数
  • 案例操作

    #统计passwd文件名,每行的行号,每行的列数
    awk -F : '{print "filename:"FILENAME",linenumber:"NR",columns:"NF}' passwd
    
    #切割IP
    ifconfig eth0 | grep "inet" | awk -F : '{print $2}' | awk -F ' ' '{print $1}'
    
    #查询sed.txt中空行所在的行号
    awk '/^$/ {print NR}' sed.txt
    

10.4 sort

sort 命令是在Liunx里非常有用,他将文件进行排序,并将排序结果标准输出

  • 基础语法

    sort (选项) (参数)
    
  • 选项说明:

    选项说明
    -n依照数值的大小排序
    -r以相反的顺序来排序
    -t设置排序时所用的分隔字符
    -k指定需要排序的列
  • 参数:指定待排序的文件列表

  • 案例操作

    #数据准备
    touch sort.txt
    vim sort.txt
    #####################################################
    bb:40:5.4
    aa:25:3.2
    cc:65:5.8
    #####################################################
    
    #按照‘:’分割后的第三列倒序排序
    sort -t : -nrk 3 sort.txt
    #####################################################
    cc:65:5.8
    bb:40:5.4
    aa:25:3.2
    #####################################################
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序小达人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值