• 文本处理三剑客命令初探


    sed

    语法

    sed 选项 "定位+命令" 文件路径
    
    流式编辑器,主要擅长对文件的编辑操作,我们可以事先定制好编辑文件的命令,然后让sed 自动完成对文件的整体编辑

    选项

    -n     取消默认输出
    
    -r     支持扩展正则元字符
    
    -i     立即编辑文件

    定位

    行定位

    1  定位到第一行
    
    1,3代表从第一行到第三行
    
    不写定位代表定位所有行

    正则表达式定位

    /egon/     包含egon的行
    
    /^egon/     以egon开头的行
    
    /egon$/     以egon结尾的行

    数字加正则表达式定位

    1,8p   代表打印1到8行
    
    1,/egon/p     则代表取从第一行到首次匹配到/egon/的行

    命令

    a     新增,a的后面可以接字符串,而这些字串会在新的一行出现(目前的下一行)
    
    
    c     取代,c的后面可以接字串,这些字串可以取代n1,n2之间的行
    
    d     删除,因为是删除啊,所以d后面通常不接任何咚咚
    
    i     插入,i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行)
    
    p     打印,亦即将某个选择的数据印出。通常phi与参数sed -n 一起运行~
    
    s     取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如1,20s/old/new/g 就是啦

    awk

    awk主要用于处理有格式的文本,例如/etc/passwd这种

    用法

    awk      选项 'pattern{action}' 文件路径

    选项

    -F   指定分隔符

    工作流程

    awk -F '{print $1,$3}' /etc/passwd
    
    1、awk会读取文件的一行内容然后赋值给$0
    
    2、然后awk会以-F指定的分隔符将该行切分成 n 段,最多可以达到 100段,第一段给$1,第二段给$2,依次类推
    
    3、print输出该段的第一段和第三段,逗号代表输出分隔符,默认与-F保持一致
    
    4、重复步骤1,2,3直到文件内容读完

    内置变量

    $0      一整行内容
    
    NR     记录号,等同于等号
    
    NF     以-F分隔符分割的段数

    pattern可以是

    正则

    /正则/      # 该行内容匹配成功正则
    
    $1 ~ /正则/     # 第一段内容匹配成功正则
    
    $1 !~ /正则/     #第一段内容没有匹配成功正则

    比较运算

    NR >= 3 && NR <=5    #3到5行
    
    $1 == 'root'     #第一段内容等于root

    action可以是

    print $1,$3

    grep

    grep 擅长过滤内容

    grep也支持管道,我们可以发现三剑客命令都支持管道

    用法

    grep 选项 '正则' 文件路径

    选项

    -n      在过滤出的每一行前面加上它在文件中的相对行号
    
    -i     忽略大小写
    
    -color     颜色
    
    -l     如果匹配成功,则只将文件名打印出来,失败则不打印
           通常-rl 一起用,grep -rl 'root' /etc
    
    -R.-r     递归

    示例

    [root@localhost ~]# grep '^root' /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    
    [root@localhost ~]# grep -n 'bash$' /etc/passwd
    1:root:x:0:0:root:/root:/bin/bash
    44:egon:x:1000:1000:egon:/home/egon:/bin/bash
    
    [root@localhost ~]# grep -rl 'root' /etc 
  • 相关阅读:
    构建git+gerrit+repo的Android代码服务器
    简单学习:repo入门
    git checkout 命令详解
    python学习第一天
    window下的git工具msysgit的使用
    git基本操作
    echarts 使用示例
    管道命令
    jquery修改文档结构
    JavaScript正则表达式
  • 原文地址:https://www.cnblogs.com/ZhZhang12138/p/14886131.html
Copyright © 2020-2023  润新知