正则表达式

来源:互联网 发布:家用踏步机 知乎 编辑:程序博客网 时间:2024/06/03 06:25

    • 通配符
    • 正则表达式与通配符
    • 元字符
    • 字符截取命令
        • cut 命令
        • awk命令
        • sed命令
    • 字符处理命令

通配符

  • * 匹配任意多个字符
  • ? 匹配任意一个字符
  • [] 匹配中括号中一个字符

正则表达式与通配符

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

元字符

这里写图片描述

  • “a*” 匹配所有内容,包括空白行
  • “aa*” 匹配至少包含有一个a的行
  • “aaa*” 匹配最少包含两个连续a的字符串
  • “aaaaa*” 匹配最少包含四个连续a的字符串

  • “s..d” 会匹配在s和d之间有两个字母的单词
  • “s.*d” 会匹配在s和d之间有任意字符
  • “.*” 匹配所有内容

  • “^M” 匹配以大写字母M开头的行
  • “n$” 匹配以小写字母n结尾的行
  • “^$” 会匹配空白行

  • “s[ao]id” 匹配s和i字母中,要不是a,要不是o
  • “[0-9]” 匹配任意一个数字
  • “^[a-z]” 匹配用小写字母开头的行
  • “^[^a-z]” 匹配不用小写字母开头的行
  • “^[^a-zA-Z]” 匹配不用字母开头的行

  • “.$” 匹配使用”.”结尾的行

  • “a{3}” 匹配a字母连续出现三次的字符串
  • “[0-9]{3}” 匹配连续的三个数字的字符串
  • “^[0-9]{3,}[a-z]” 匹配最少用连续三个数字开头的行
  • “sa{1,3}i” 匹配在字母s和字母i之间最少一个a,最多三个a

字符截取命令

cut 命令

  • cut [选项] 文件名
    – f 列号:提取第几列
    – d 分隔符:按照指定分隔符分隔列
  • 默认为制表符

  • printf ‘输出类型输出格式’ 输出内容
  • 输出类型
    – %ns 输出字符串。n是数字指代输出几个字符
    – %ni 输出整数
    – %m.nf 输出浮点数。m和n是数字,指代输出的整数位数和小数位数。如%8.2f代表共输出8位数,其中2位是小数,6位是整数。
  • 输出格式
  • \n 换行

awk命令

  • awk ‘条件1{动作1}条件2{动作2}…’ 文件名
  • 条件
    – 一般使用关系表达式作为条件
    – x > 10 判断变量x是否大于10
    – x >= 10 大于等于
    – x <= 10 小于等于
  • 动作
    – 格式化输出
    – 流程控制语句

  • awk ‘{printf $1”\n”}’ /etc/hosts
  • df -h | awk ‘{printf $5”\n”}’ | cut -f 1 -d “%”
  • awk ‘BEGIN{printf “hosts ip”}{printf $1 “\n”}’ /etc/hosts
  • cat /etc/passwd | grep “/bin/bash” | awk ‘BEGIN{FS=”:”}{print $1 “\t” $3}’
  • cat /etc/passwd | grep “/bin/bash” | awk ‘BEGIN{FS=”:”}{print $1 “\t” $3}’

sed命令

  • sed [选项] ‘[动作]’ 文件名
  • 选项:
    –n:一般sed命令会把所有数据都输出到屏幕,如果加入此选择则只会把经过sed命令处理的行输出到屏幕
    – e:允许对输入数据应用多条sed命令进行编辑
    – i:用sed的修改结果直接修改读取数据的文件,而不是由屏幕输出
  • 动作
    – a:追加,在当前行后添加一行或多行
    – c:行替换,用c后面的字符串替换原数据行
    – i:插入,在当前行前插入一行或多行
    – d:删除,删除指定行
    – p:打印,输出指定的行
    – s:字符替换,用一个字符串替换另一个字符串。格式为“行范围s/旧字符串/新字符串/g”

  • sed -n ‘2p’ zz.txt
  • sed ‘1,4d’ zz.txt
  • sed ‘2a 2016-05-06’ zz.txt
  • sed ‘2i 2016-05-06’ zz.txt
  • sed ‘2c 2016-05-06’ zz.txt
  • sed ‘2s/04/06/g’ zz.txt
  • sed -e ‘s/04/06/g;s/a/b/g’ zz.txt

字符处理命令

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

  • sort /etc/passwd
  • sort -r /etc/passwd
  • sort -n -t “:” -k 3,3 /etc/passwd

  • wc [选项] 文件名
  • 选项:
    – l:只统计行数
    – w:只统计单词数
    – m:只统计字符数

  • wc -l /etc/passwd
0 0
原创粉丝点击