• shell编程-正则表达式


    1.正则表达式是什么

    它主要用于字符串的模式分割,匹配,查找及替换操作。

    2、正则表达式与通配符

    正则表达式用来在文件中匹配符合条件的字符串,正则包含匹配。grep,awk,sed等命令可以支持正则表达式。

    通配符用来匹配符合条件的文件名,通配符是完全匹配。ls ,find,cp这些命令不支持正则表达式,所以只能使用shell自己的通配符进行匹配了。

    3.基础正则表达式

     .相当于通配符的?

    [0-9]{4}-[0-9]{2}-[0-9]{2}

    [0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}

    3.字符截取命令

    cut [选项] 文件名

    -f 列号:提取第几列

    -d:分隔符:按照指定分隔符分割列,默认分隔符是tab键(制表符)

    ID name gender Make
    1   nyan     n       89
    2   luke      l        87
    3   mak      n       67

    cut -f 1,3 student.txt

    grep "/bin/bash" /etc/passwd | grep -v "root" | cut -f 1 -d ":"

    printf  '输出类型输出格式' 输出内容

    输出类型:

    %ns:输出字符串。n是数字指代输出几个字符

    %ni:输出整数。n是数字指代输出几个数

    %m.nf:输出浮点数.m和n指代输出整数位和小数位位数

    printf不支持管道符,所以printf $(cat 2.txt)

    awk '条件1{动作1}条件2{动作2}...' 文件名

    条件Pattern:

    一般使用关系表达式作为条件:>,<>=,<=

    动作Action:

    格式化输出

    流程控制语句

    awk '{printf $2 " " $4 " "}' student.txt

    BEGIN: awk 'BEGIN{print "test"}{print $2 " " $4}' student.txt

    FS内置变量: cat /etc/passwd |grep /bin/bash |awk '{FS=":"}{print $1 " " $3}'

    如果没有加BEGIN,则是先读取数据赋值给指定变量$n,再告诉FS是":"作为分隔符,此时已晚。

    cat /etc/passwd |grep /bin/bash |awk 'BEGIN{FS=":"}{print $1 " " $3}'

    sed字符替换命令

    sed [选项] '[动作]' 文件名

    -n:一般sed命令会把所有数据输出到屏幕,如果加入此选择,则只会把经过sed命令处理的行输出到屏幕。

    -e:允许对输入数据应用多条sed命令编辑

    -i:用sed修改结果直接修改读取数据的文件,而不是有屏幕输出。

    动作:

    a:追加,在当前行后添加一行或多行

    c:行替换,用c后面的字符串替换源数据行

    i:插入,在当前行插入一行或多行。

    d:删除指定行

    p:打印,输出指定的行

    s:字符串替换,用一个字符串替换另外一一个字符串。格式为 "行范围s/旧字符串/新字符串/g"

    sed -n '2p' student.txt

    sed '2a 3 f v m' student.txt

    sed '2,4d' student.txt

    前面数字是行号

    4.字符处理命令

    sort [选项] 文件名

    -f:忽略大小写

    -n:以数值型进行排序,默认使用字符串型排序

    -r:反向排序

    -t:指定分隔符,默认是分隔符是制表符

    -k n[,m]:按照指定的字段范围排序。从第n字段开始,m字段结束(默认到行尾)

    sort -n -t ":" -k "3,3" /etc/passwd

    wc:统计命令

    wc [选项] 文件名

    -l:只统计行数

    -w:只统计单词数

    -m:只统计字符数

  • 相关阅读:
    【XFeng安卓开发笔记】Android开发中如何调用打电话功能
    【XFeng安卓开发笔记】edittext中怎样禁止系统自带键盘弹出但光标还在
    【XFeng安卓开发笔记】android 如何在对话框中获取edittext中的数据
    【nRF51822蓝牙开发笔记】点亮LED灯
    基于R7F0C80212ESP的蓝牙婴儿早教机
    read、write和lseek
    open(/dev/ietctl, O_RDWR) 函数
    通过linux命令来控制板上GP_LED灯亮灭
    更新开发板固件
    PHP_EOL
  • 原文地址:https://www.cnblogs.com/Nyan-Workflow-FC/p/5667629.html
Copyright © 2020-2023  润新知