sed从原理到实战

sed工作原理

  • sed是一行一行处理的,每次从文件中读取一行到临时的缓冲区里,叫做模式空间
  • 接着用 sed 命令处理模式空间的行
  • 把处理结果输出到屏幕
  • 接着处理下一行
    简单说,sed 是一行一行处理的,每次从文件中读取一行输入到模式空间,再把处理结果输出到屏幕。如图:
    在这里插入图片描述

语法及常用命令

sed语法:sed [options] ‘scripts’ file

  1. 常用options
选项含义
-e可执行多条sed命令
-n抑制模式空间输出
-r支持扩展正则表达式
-i suffix先生成指定后缀的备份文件,再修改原文件
  1. scripts详解
    scripts包含 address 和 command ,即对匹配行执行命令
    定址方法有数字定址和正则定址,也可混合使用,这里不赘述
    常用子命令如下:
sed命令功能
s替换字符(最常用的sed命令)
a在匹配行下面追加内容行
i在匹配行上面插入内容行
c把匹配行替换成指定内容
d删除行
=在匹配行上面添加行号
N读下一行内容到模式空间,用\n拼接上一行

练习

  1. 删除文件每行第二个字符
sed -r 's/(.)(.)(.*)$/\1\3/' my.txt
  1. 交换每行第一个字符和第二个字符
sed -r 's/(.)(.)(.*)/\2\1\3/' my.txt
  1. 删除文件中所有数字
sed 's/[0-9]//g' my.txt
  1. 用制表符替换文件中出现的所有空格
sed 's/ +/\t/g' my.txt
  1. 把所有大写字母用 () 括起来
sed -r 's/([A-Z])/(\1)/g' my.txt
  1. 隔行删除
sed '0~2{d}' my.txt		# N~M表示从第N行开始,每隔M-1行;这里是从第0行开始,隔一行删除,即删除偶数行

sed '1~2{d}' my.txt			# 删除奇数行
  1. 删除所有空行
sed '/^$/d' my.txt
  1. 在每行行首添加行号
sed '=' my.txt | sed 'N; s/\n/ /'
  1. 在行尾添加东西
sed 's/$/..../' my.txt
  1. 删除以ABC开头的行
sed '/^ABC/d' my.txt

不得不说,sed用起来还是挺好玩的,是很高效的文本编辑工具。就是正则表达式的使用不太熟练,还是得多加练习,用起来才得心应手

参考

干货!上古神器 sed 教程详解,小白也能看的懂

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值