grep/sed/awk

文本处理三剑客笔记整理

1. grep

功能:文本过滤

  • 基本用法grep [OPTIONS] PATTERN [FILE...]
  • 元字符
    • ^:以什么开头
    • $:以什么结尾
    • .:任意单个字符
    • *:前面的字符出现0次或多次
    • +:前面的字符出现1次或多次(扩展正则)
    • ?:前面的字符出现0次或1次(扩展正则)
    • {}:前面的字符出现指定次数(扩展正则,如{n,m}
    • |:选择,匹配左边或右边的表达式(扩展正则)
    • []:字符集合,匹配集合中的任意字符
    • \b:单词边界
    • ():分组(扩展正则)
  • 选项
    • -E:使用扩展正则表达式
    • -i:忽略大小写
    • -v:反向选择,只显示不匹配的行
    • -n:显示匹配的行号
    • -A n:显示匹配行及之后的n行
    • -B n:显示匹配行及之前的n行
    • -C n:显示匹配行及前后各n行
    • -o:只显示匹配到的字符串
2. sed

功能:文本替换

  • 基本用法sed [OPTION]... {script-only-if-no-other-script} [input-file]...
  • 内部命令
    • p:打印
    • d:删除
    • a:追加
    • i:插入
    • s:替换
    • c:整行替换
  • 选项
    • -i:直接修改文件内容
    • -r 或 -E:使用扩展正则表达式
  • 替换语法sed 's/原字符串/新字符串/[g]' 文件名
    • g:全局替换
    • 数字:指定替换第几个匹配项
  • 示例
sed -i -r '/^zhang|^feng/ s/caojie/zhangjie/' name.txt#将文件中以zhang或feng开头的行中的caojie替换为zhangjie
sed -i '/^SELINUX=/ c SELINUX=disabled' config#将SELINUX行整行替换为SELINUX=disabled
3. awk

功能:文本截取

  • 基本用法awk [options] 'program' file...
  • 程序结构BEGIN{...} pattern {action} END{...}
  • 内建变量
    • NR:当前记录数(行号)
    • NF:当前记录中的字段数
    • $0:当前记录
    • $1$2, ...:当前记录的第1个、第2个字段...
    • FS:输入字段分隔符(默认为空白字符)
    • OFS:输出字段分隔符(默认为一个空格)
  • 选项
    • -F fs:指定输入字段分隔符
    • -v var=value:定义awk变量
  • 数组:支持关联数组,下标可以是字符串
  • 示例
awk -F: '{print $1, $3, $NF}' /etc/passwd#打印/etc/passwd文件的用户名、用户ID和最后一个字段
awk -v var=$1 -F: '$1==var{print NR,$0}' /etc/passwd#根据传入的用户名打印该用户的行号和整行内容
通配符
  • *:任意个任意字符
  • ?:单个任意字符
  • {n..m}:在shell中通配符不直接支持,但在某些上下文中(如for循环)表示范围
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值