<linux-sed> sed基本用法

本文介绍了sed编辑器的基本概念,包括其工作原理、如何通过定址指定处理行以及常用的sed命令和选项。sed是一种非交互式的文本编辑工具,适用于批量文本处理任务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[b]1.简介[/b]
sed全称是Stream Editor,是非交互式的编辑器。它不会修改原文件,除非使用shell重定向来保存结果, 或者可以指定-i选项来在线修改文件,这样就会改变原文件,升级脚本通常用-i选项。[b]默认情况下,所有的输出行都被打印到屏幕上[/b]。sed 本身也是一个[color=red]管线命令[/color],可以分析 standard input 。

sed编辑器[color=red]逐行处理文件(或输入)[/color],并将结果发送到屏幕。具体过程如下:
[color=red](1)[/color]首先sed把当前正在处理的行保存在一个临时缓存区中(也称为模式空间),[color=red](2)[/color]然后处理临时缓冲区中的行,[color=red](3)[/color]完成后把该行发送到屏幕上。
sed每处理完一行就将其从临时缓冲区删除,然后将下一行读入,进行处理和显示。处理完输入文件的最后一行后,sed便结束运行。sed把每一行都存在临时缓冲区中,对这个副本进行编辑,所以不会修改原文件。

[b]2. 定址[/b]
在使用sed的过程中,我们经常会听到“定址”,那么什么是“定址”呢?
[color=red]定址用于决定对哪些行进行编辑[/color]。地址的形式可以是[color=red]数字、正则表达式、或二者的结合[/color]。如果没有指定地址,sed将处理输入文件的所有行。
比如:
1)地址是一个数字则表示行号;是“$"符号,则表示最后一行。
sed -n '3p' datafile   #只打印第三行  


2)只显示指定行范围的文件内容
sed -n '100,200p' mysql_slow_query.log  # 只查看文件的第100行到第200行


3)地址是逗号分隔的,那么需要处理的地址是这两行之间的[b]范围[/b](包括这两行在内)。范围可以用数字、正则表达式、或二者的组合表示。
• sed '2,5d' datafile #删除第二到第五行

• sed '/My/,/You/d' datafile #删除包含"My"的行到包含"You"的行之间的行

• sed '/My/,10d' datafile #删除包含"My"的行到第十行的内容

[b]3. sed命令与选项[/b]
调用sed命令有两种形式:
sed [options] 'command' file(s)
sed [options] -f scriptfile file(s)

对于第一种形式,具体调用一般是:
[color=red]sed [选项][定址[命令]] file(s)[/color]

命令和选项如下:
[b]3.1、sed命令[/b]
[img]http://dl2.iteye.com/upload/attachment/0106/5700/65b80420-5465-3193-ae7b-40949b375e43.bmp[/img]
[img]http://dl2.iteye.com/upload/attachment/0106/5698/a117f9c9-65d6-3f74-aa7f-c32db90597f7.png[/img]

[b] 3.2、sed选项[/b]
[img]http://dl2.iteye.com/upload/attachment/0106/5696/5524ef9d-8052-33e7-9b36-2ca6ad930261.png[/img]

[b]补充:[/b]
在sed的命令行中引用shell[color=red]变量[/color]时要使用[color=red]双引号[/color],而不是通常所用的单引号。这根grep一样,双引号会获取变量的值,而单引号只会把变量当做普通字面字符。

更多可以参考:
[url]http://www.cnblogs.com/edwardlost/archive/2010/09/17/1829145.html[/url]
[url]http://blog.youkuaiyun.com/engledb/article/details/19623087[/url]
[url]http://www.iteye.com/topic/587673[/url]
[url]http://www.cnblogs.com/edwardlost/archive/2010/09/17/1829145.html[/url]
《鸟哥的linux私房菜 基础篇》第12章
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值