shell编程基础(二)

shell编程基础(二)

一、初识正则表达式

1. 基本语法

1.1 字符类
字符含义举例
.匹配任意一个字符abc.可以匹配abcd、abc9
[]匹配括号中的任意一个字符[abc]d可以匹配ad、bd、或cd
-在[]括号内表示字符范围[0-9a-fA-F]可以匹配一位十六进制数
^位于[]括号内的开头,匹配括号中字符之外的任意字符[^xy]匹配出xy之外的其他字符,因此[ ^xy]1可以匹配a1、b1、但是不匹配x1、y1
[[:xxx:]]grep工具预定义的一些命名字符类[[:alpha:]]匹配一个字母,[[:digit:]]匹配一个数字
1.2 数量限定符
字符含义举例
紧跟在它前面的单元应匹配零次或一次[0-9]?\ .[0-9]:匹配0.0、2.3等
+紧跟在它前面的单元应匹配一次或多次[a-zA-Z0-9_.-]+@[a-zA-Z0-9 .-]+:匹配email地址
*紧跟在它前面的单元应匹配零次或多次[0-9] [0-9]*匹配至少一位数字
{N}紧跟在它前面的单元应精准匹配N次[1-9] [0-9]{2}:匹配从100到999的整数
{N,}紧跟在它前面的单元应匹配至少N次[1-9] [0-9]{2,}:匹配三位以上整数
{,M}紧跟在它前面的单元应匹配最多M次[0-9] {,1}相当于[0-9]?
{N,M}紧跟在它前面的单元应匹配至少N次,最多M次[0-9] {1,3}\ .[0-9]{1,3}\ .[0-9] {1,3}\ .[0-9]{1,3}:匹配ip地址
1.3 位置限定符
字符含义举例
^匹配行首的位置^Content匹配位于一行开头的Content
$匹配行末的位置:KaTeX parse error: Expected group after '^' at position 15: 匹配位于一行结尾的 : 号,^̲匹配空行
\ <匹配单词开头的位置\ <th匹配. . . this,但不匹配ethernet、tenth
\ >匹配单词结尾的位置p\ >匹配leap. . .,但不匹配parent、sleepy
\b匹配单词开头或结尾的位置\bat\b匹配. . . at . . .,但不匹配cat、atexit、batch
\B匹配非单词开头和结尾的位置\Bat\B匹配battery,但不匹配. . . attend、hat . . .
1.4 特殊字符
字符含义举例
\转义字符,普通字符转义为特殊字符,特殊字符转义为普通字符普通字符<写成\ <表示单词开头的位置,特殊字符 . 写成\ .
()将正则表达式的一部分组成一个单元,可以对整个单元使用数量限定符([0-9] {1,3}\ .){3}[0-9]{1,3}匹配ip地址
|连接两个子表达式,表示或的关系n(o|rither)匹配no或neither

2. Basic正则和Extended正则

Basic正则也有Extended的一些语法,只是字符?+{}|()应解释为普通字符,要表示这些字符的含义必须对其进行转义。如果用grep而不是egrep,并且没有加-E参数,则应该遵照Basic规范

二、grep命令

1. 概述

Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并将匹配的行打印出来,全程称是Global Regular Expression Print,表示全局正则表达式版本,使用权限为所有用户。

grep家族包括egrep、和fgrep。egrep是grep的扩展,支持更多的re元字符,fgrep将所有字母都看作单词,也就是正则表达式中的元字符表示回其自身的字面意义,不再特殊。

2. 格式及参数

  • grep [options]
  • -c:只输出匹配行的计数
  • -i:不区分大小写
  • -h:查询多文件时不显示文件名
  • -l:查询多文件时值输出包含匹配字符的文件名
  • -n:显式匹配行和行号
  • -s:不显示不存在或无匹配文本的错误信息
  • -v:显式不包含匹配的所有行
  • –color=auto:可以将找到的关键词部分加上颜色显式
    在这里插入图片描述

三、find命令

  • find用于查找文件

  • -name:find ./ -name “init” find /目录位置 参数 “匹配项”

  • -size:find ./ -size +3M -size -7M

  • -type:-d/-f/-p/-l/-c/-b:查找指定类型的文件

  • -maxdepth:find ./ -maxdepth 2 -type d:指定搜索的层级

  • -exec:find ./ -maxdepth 2 -type d -size +2k -exec ls -l {} ;
    在这里插入图片描述

  • -ok:find ./ -maxdepth 1 -type d -ok rm -rf {} ;
    在这里插入图片描述

  • -xargs:将搜索到的结果集进行分批处理

  • -atime|ctime|mtime:天为单位—>a表示访问,c表示文件内容修改,m:表示文件属性修改

四、sed命令

sed为流编辑器(Stream Editor),在脚本中作为过滤器进行使用,即将前一个程序的输出引入sed的输入,经过一系列编辑命令转换为另一种格式输出

  • sed option ‘script’ file1 file2……

常用选项

  • -n,–queit,–silent:静默输出,默认情况下sed程序在所有脚本执行完会自动打印模式空间的内容,使用此参数可以进行屏蔽

  • -e script:允许多个脚本命令执行

  • -f script-file:从文件中读取脚本指令

  • -i,–in-place:直接修改源文件

  • a:追加
    在这里插入图片描述

  • d:删除
    在这里插入图片描述

  • 替换
    在这里插入图片描述

  • sed -i ‘s/[字符串]/-&-/’ [文件名]:&的含义为取地址,及它代表前面的字符串

五、awk

sed以行为单位处理文件,AWK既可以以行为单位也可以一列为单位。awk缺省的行分隔符是换行,缺省的列分隔符是连续的空格和tab键,但是行分隔符和列分隔符都可以自定义,可以将没一行若干字段以:分割,就可以重新定义awk的列分隔符为:,并以列为单位处理文件

  • awk option ‘script’ file1 file2……
  • awk option -f scriptfile file1 file2 ……
    在这里插入图片描述
  • awk ‘/^ *$/ {var=var+1} END {print var}’ [文件名]:统计文件中的所有空行

awk中预定义的变量

  • FILENAME:当前输入文件的文件名,该变量为只读

  • NR:当前行的行号,该变量为只读

  • NF:当前行所拥有的列数,该变量为只读

  • OFS:输出格式列分隔符,缺省为空格

  • FS:输出文件的列分隔符,缺省为连续空格和Tab

  • ORS:输出格式的行分隔符,缺省是换行符

  • RS:输出文件的行分隔符,缺省是换行
    在这里插入图片描述

  • 统计进程号大于7000小于8000
    在这里插入图片描述

六、其他

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

ysw!不将就

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

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

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

打赏作者

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

抵扣说明:

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

余额充值