Linux bash正则表达三剑客grep,sed,awk以及find,xargs命令

一、grep 命令

1. 语法:

  • options pattern file pattern表示为字符串

2. 常用参数

  • -n 显示匹配的行号
  • -i 忽略大小写
  • -v 显示不能被pattern匹配到的行
  • -E 支持拓展正则表达式
  • -q 静默模式,不输出任何信息
  • -c 只统计匹配的行数
  • -w 只匹配过滤的单词
  • -o 只输出匹配的内容

二、sed命令

1. 语法:

  • sed [选项参数] [sed内置命令字符] [输入文件]

2. 常用选项参数及内置命令

参数:

  • -n 取消默认的sed输出,常与sed内置命令p一起使用
  • -i 直接将修改结果写入文件,不用-i修改在内存中进行,对文件无影响
  • -e 多次编辑,不需要管道符了
  • -r 支持拓展正则

内置命令:

  • a append,对文本追加,在指定行后面添加内容
  • d delete,删除匹配行
  • i insert,表示插入文本,在指定行前插入
  • p print,打印匹配行的内容,常与-n一起使用
  • s/正则/替换内容/g 匹配正则内容,然后进行替换,g代表全局global

范围:

  • 空地址 全文处理
  • 单地址 指定文件某一行
  • /pattern/ 被模式匹配到的每一行
  • 范围区间 10,29十到二十行,10,+5第十行向下5行,/pattern1/,/pattern2/
  • 步长 1~2,表示从第1行开始,取间隔为2的行,1,3,5,7…,2~2为两个步长,从2开始

三 、awk命令

1. 语法:

  • awk [options] ‘pattern[action]’ file …
  • 最常用的action为print,printf

2. awk内置变量

  • $0 表示整行
  • $NF (number of fields)表示当前分割的最后一列
  • $(NF-1) 表示倒数第二列
  • NR(number of records) 当前记录数,行数NR==5,表示指定第5行
  • $n 表示第n列
  • FS 输入字段分割符,默认为空格配合-v Fs=’[ :]'修改输入分隔符
  • OFS 输出字段分隔符,默认为空格
  • RS 输入换行,指定输入时的换行符
  • ORS 输出换行符
  • FNR 个文件分别计数的行号
  • FILENAME 当前文件名

3. 参数

  • -F 指定分割字符段
  • -v 定义或者修改一个awk内部的变量
  • -f 从脚本文件中读取awk命令

四、find命令

  • 说明:find命令用来在指定的目录下查找文件,任何位于参数之前的字符串都将被视为欲查找的文件名,如果不设置参数,则在当前目录下查找字目录文件

1. 语法:

  • find pathname -命令参数 限定条件 执行动作

2. 参数:

参数:

  • -maxdepth 最大目录层级
  • -mindepth 最小目录层级

tests模块:

  • -atime 访问时间
  • -ctime 变化时间,文件数据元例如权限,最后一次修改时间
  • -mtime 修改时间,指数据变动
  • -name 文件名
  • -group 所属组
  • -perm 按权限查找
  • -size n[cwbkMG] 按文件大小查找
  • -type 查找某一类型的文件
    d - 目录
    f - 普通文件
    l - 符号链接
  • -user 按文件属主查找
  • -path 配合-prune参数排查目录

action模块:

  • -prune 让find命令不在指定的目录找
  • -delete 删除找出的文件
  • -exec or -ok 对匹配的文件执行相应的shell命令
  • -print 将匹配的结果进行标准输出

operators:

  • ! 取反
  • -a 取交集 &&
  • -o取并集 ||

xargs命令

1. 参数:

  • -d 为输入定制一个分割符,默认分隔符是空格
  • -i 用{}传递的数据
  • -I string 用string来代替传递的参数
  • -n 选项限制单个命令行的参数个数
  • -t 显示执行详情
  • -p 交互模式

你可能感兴趣的:(linux,shell,运维)