文本操作笔记之sed

SED笔记

1 元字符和文件查找

1.1 元字符

 • . 匹配除换行符外的任意单个字符
• * 匹配任意一个跟在它前面的字符
• [ ] 匹配方括号中的字符类中的任意一个
• ^ 匹配开头
• $ 匹配结尾
• \ 转义后面的特殊字符

转义字符一般需要双引号进行括起来,不然可能会二次解析

扩展元字符
• + 匹配前面的正则表达式至少出现一次
• ? 匹配前面的正则表达式出现零次或一次
• | 匹配它前面或后面的正则表达式

1.2 文件查找命令 find  

格式:find 路径 查找条件 [ 补充条件 ]
根据文件类型来进行查找

根据文件时间来进行查找,-atime是最后访问的时间,如cat;-mtime是文件内容修改的时间,如>>;-ctime是文件的基本信息修改,比如chmod;touch三个都修改,>>修改-mtime和-cttime

找到文件进行删除,提示删除信息

1.3 文本内容查找命令 grep

• grep 选项 文本文件1  [ … 文本文件n ]
    • 常用选项
        • -i 忽略大小写
        • -r 递归读取每一个目录下的所有文件
找到文件中对应的行进行剪切

2 sed

2.1 行编辑器

• Vim 和 sed、AWK 的区别
    • 交互式与非交互式
    • 文件操作模式与行操作模式
• sed 的基本用法演示
    sed 一般用于对文本内容做替换
      sed ‘/user1/s/user1/u1/’ /etc/passwd
• AWK 的基本用法演示
    AWK 一般用于对文本内容进行统计、按需要的格式进行输出
    cut    命令: cut -d : -f 1 /etc/passwd
    AWK 命令: awk -F: ‘/wd$/{print $1}’ /etc/passwd

2.2 Sed的替换命令

• sed 的模式空间
    sed 的基本工作方式是:
        • 将文件以行为单位读取到内存(模式空间)
        • 使用sed的每个脚本对该行进行操作
        • 处理完成后输出该行

• 替换命令 s
    sed 的替换命令 s:
        • sed ’s/old/new/’ filename
        • sed -e ’s/old/new/’  -e  ’s/old/new/’   filename  …
        • sed -i ’s/old/new/’  ’s/old/new/’   filename  …

• 带正则表达式的替换命令 s:
      • sed ’s/正则表达式/new/’ filename
      • sed -r ’s/扩展正则表达式/new/’ filename


匹配文件的前5行并且替换前三个字符为空输出

* + ? |的使用

     

     

通过()分组实现sed的回调

2.2 sed加强版

• 全局替换 g
     s/old/new/g
    • g 为全局替换,用于替换所有出现的次数
    • / 如果和正则匹配的内容冲突可以使用其他符号,如:
    • s@old@new@g
• 标志位 数字
    s/old/new/标志位
    • 数字,第几次出现才进行替换
    • g,每次出现都进行替换
    • p 打印模式空间的内容
    • sed -n ‘script’ filename 阻止默认输出
    • w file 将模式空间的内容写入到文件

• 寻址
    默认对每行进行操作,增加寻址后对匹配的行进行操作
    • /正则表达式/s/old/new/g
    • 行号s/old/new/g
    • 行号可以是具体的行,也可以是后一行 $  符号
    • 可以使用两个寻址符号,也可以混合使用行号和正则地址

• 分组
    • 寻址可以匹配多条命令
    • /regular/ { s/old/new/ ; s/old/new/ }
• sed 脚本文件
    • 可以将选项保存为文件,使用-f 加载脚本文件
    • sed -f sedscript  filename

• 删除命令
    • [ 寻址 ]d
        • 删除模式空间内容,改变脚本的控制流,读取新的输入行
d会改变基本的处理流程,匹配d后面的命令不会被执行

• 追加、插入、更改
    • 追加命令 a
    • 插入命令 i
    • 更改命令 c

• 打印
    • 打印命令 p
• 下一行
    • 下一行命令 n
    • 打印行号命令 =

• 读文件和写文件
    • 读文件命令 r
    • 写文件命令 w
• 退出命令
    • 退出命令 q
        • 哪个效率会更高呢?
        • sed 10q filename
        • sed -n 1,10p filename
创建一个1..1000000行的文件,查看行数

sed是逐行读取每一行,会就在文件到内存,q只会读取前10行打印

sed多行模式
为什么要有多行模式? 
    • 配置文件一般为单行出现
    • 也有使用 XML 或 JSON 格式的配置文件,为多行出现
多行模式处理命令 N、D、 P
    • N 将下一行加入到模式空间
    • D  删除模式空间中的第一个字符到第一个换行符
    • P  打印模式空间中的第一个字符到第一个换行符
.间接做了换行的作用

每次多去多行,用sed解决多行配置文件的问题

sed的保持空间
• 什么是保持空间
    • 保持空间也是多行的一种操作方式
    • 将内容暂存在保持空间,便于做多行处理

• 保持空间命令
    • h 和 H 将模式空间内容存放到保持空间
    • g 和 G 将保持空间内容取出到模式空间
    • x 交换模式空间和保持空间内容
行数反转

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值