[shell] 命令-sed

sed 命令介绍

  1. sed是贝尔实验室Lee.E.McMahon在1973年到1974年开发的流编译器;它是基于交互式行编译器ed开发的。sed也是做早支持正则表达式的工具之一。我们用sed不限于对文件的增删改查。
  2. sed会逐行扫描输入数据, 送到缓冲区(sed模式空间),然后操作缓冲区的数据
  3. 实用方式:

管道方式: 命令 | sed ‘选项’ 【匹配条件和操作指令 】
直接操作:sed ‘选项’ 【匹配条件和操作指令 】file

sed选项介绍

2.1 基础用法

-n: 屏蔽一些已有的输出,只打印sed命令筛选的输出
-i: 代表着对源文件直接操作,要慎用,一般确认指令正确后再加i; 另外这个选项i要和sed命令i作区分; sed命令中的i表示插入内容

sed -i.bak ‘2d’ /tmp/hosts: 备份再修改
-e: 指定需要执行的sed命令
sed ‘s/^ls -l /e’ : 将ls -l替换,并执行

sed 命令

多个命令用分号隔开: sed -n ‘1p;2p;$p’ /tmp.txt
a:text 在匹配数据行后面添加内容
i:在匹配数据行前插入text内容
d:表示喊出匹配整行内容text
c:text将匹配的整行替换为指定的text
r:filename 读取数据并添加,可以在r前加命令 sed ‘1r /etc/host’ /tmp.txt 读取tmp第一行放到/etc/host
w:类似,是
q:退出
s/regexp/replace/: 正则表达式匹配后,替换为replace位置的字符
\cregexpc: 正则表达式匹配,c可以是任意字符
addr1,addr2; addr1,+N:使用行号定位
!:对匹配的东西取反 sed ‘1!p’ /etc/hosts 除了第一行,都显示
g: 可以理解为表示global 全部: sed -i ‘s/h/H/g’ 替换一行中所有的h为H; 如果没有g,只替换第一个,这个g也可以是数字,表示第几个h被替换
=: 获取行号

2.2 高级用法

待续。。。

实用示例

1. 执行编译的时候,需要修改配置,完成多种模式下的自动编译

这需要修改配置中的某些参数值,通过修改后多次调用编译,即可实现; 因此此处需要用到sed进行行匹配和指定字符的替换完成参数修改


2. 常用案例

sed -i '/^$/d' /temp 删除空白行
sed -i '/^#/d' /tmp 删除'#'符号靠头的行

echo "tempfile" | sed 's#^#touch /tmp/#' 将tmpfile 替换为touch /tmp/tmpfile; '#'号作为替换符
sed -r 's/^(.)(.*)(.)$/\3\2\1/' test.txt. 将每一行倒序,注意括号是正则表达式中的保留功能,通过后面的\n 来调用前面保留的数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值