zoukankan      html  css  js  c++  java
  • shell编程值之正则表达式与字符截取(6)

    正则表达式与通配符

    • 正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配。grep、awk、sed等命令可以支持正则表达式
    • 通配符用来匹配符合条件的文件名,通配符是完全匹配。ls、find、cp这些命令不支持政策表达式,所以只能使用shell自己的通配符来进行匹配了

    通配符

    • 匹配任意内容
      ? 匹配任意一个内容
      [] 匹配中扣号中的一个字符

    正则表达式

    字符截取命令

    1 cut字段提取命令
    cut [选项]文件名
    选项:
    -f 列号: 提取第几列
    -d 分隔符: 按照指定分隔符分割列
    
    cut -f 2 student.txt
    
    cut -f 2,4 student.txt
    
    cut -d ":" -f 1,3 /etc/passwd
    
    2 printf命令
    printf '输出类型输出格式' 输出内容
    
    输出类型:
    
     %ns : 输出字符串。n是数字只带输出几个字符
     %ni : 输出整数。n是数字指代输出几个数字
     %m.nf: 输出浮点数。m和n是数字,指代输出的整数位和小数位 如     %8.2f代表共输出8位数,其中2位是小数,6位是整数
    
    3 awk命令
    awk `条件1{动作1} 条件2{动作2}...` 文件名
    
    条件 (pattern):
    一般使用关系表达式作为条件
    x>10判断变量 x是否大于10
    x>=10大于等于
    x<=10小于等于
    动作(action)
    格式化输出
    流程控制语句
    
    awk `{print $2 "	" $4 "
    "}` student.txt
    
    df -h | awk `{print $1 "	" $3}`
    
    4 sed命令

    sed的是流编程器的缩写。它是文本处理中不可获取的工具。ser主要是用来将数据进行选取、替换、删除、新增的命令。

    sed [选项]`[动作]` 文件名
    选项: 
    -n 一般sed命令会把所有数据都输出到屏幕,如果加入此选择则只会把经过sed命令处理的行输出到屏幕
    -e 允许对输入数据应用多条sed命令编辑
    -i 用sed的修改结果直接修改读取数据的文件,而不是由屏幕输出
    
    动作:
    a : 追加,当前行后添加一行或多行
    c :行替换,用c后面的字符串替换原数据行
    i :插入,在当期行前插入一行或多行。d:删除,删除指定的行
    p :打印,输出指定的行
    s : 字符串替换,用一个字符串替换另外一个字符串。格式为"行范围s/旧字符串/新字符串/g"
    
    
    sed '2p' student.txt 查看文件的第二行
    
    sed -n '2p' student.txt
    
    字符串替换
    
    sed 's/旧字串/新字串/g' 文件名
    
    sed '3s/60/99/g' student.txt
    在第三行中,把60替换成90
    sed -i '3s/60/99/g' student.txt
    在第三行中,把60替换成90并直接写入文件
    
    sed -e 's/fengj//g;s/cang/g' student.txt
    
    同时把'fengj' 和 'cang' 替换为空
    

    sort命令与wc命令

    ####### 1 排序命令sort

    sort[选项] 文件名

    -f 忽略大小写
    -n 以数值型进行排序,默认使用字符串型排序
    -r 反向排序
    -t 执行分隔符,默认是分隔符是制表符
    -k n[,m] 按照指定的字段范围排序,从第n字段开始,m字段结束(默认到行尾)

  • 相关阅读:
    Git常用命令清单笔记
    MySQL sql语句获取当前日期|时间|时间戳
    mysql-5.7.17.msi安装
    mysql sql语句大全
    解决Springboot集成ActivitiModel提示输入用户名密码的问题
    JAVA Spring MVC中各个filter的用法
    Spring Boot gradle 集成servlet/jsp 教程及示例
    RequireJS 参考文章
    Javascript模块化工具require.js教程
    Javascript模块化编程之路——(require.js)
  • 原文地址:https://www.cnblogs.com/chenjinxinlove/p/7147580.html
Copyright © 2011-2022 走看看