shell_04

sed命令
sed基本用法
sed命令选项
sed命令定位
sed基本编辑




sed基本用法(1)
sed(stream editor)是流编辑器,可对文本文件和标准输入进行编辑。
sed只是对缓冲区中原始文件的副本进行编辑,并不编辑原始的文件,如果需要保存改动内容,可以选择使用下面两种方法:
重定向
w编辑命令


sed基本用法(2)
调用sed有三种方法:
在Shell命令行输入命令调用sed,格式为:
    sed [选项] ‘sed命令’ 输入文件
将sed命令插入脚本文件后,然后通过sed命令调用它,格式为:
    sed [选项] -f sed脚本文件 输入文件
将sed命令插入脚本文件后,最常用的方法是设置该脚本文件为可执行,然后直接执行该脚本文件,格式为:
   ./sed脚本文件 输入文件
第二种方法脚本文件的首行不以#!/bin/sed f开头;第三种方法脚本文件的首行是#!/bin/sed f
推荐使用第一种方法和第三种方法






sed命令选项
-i  直接修改文件内容
-n 不打印所有行到标准输出
-e 表示将下一个字符串解析为sed编辑命令,如果只传递一个编辑命令给sed,-e选项可以省略
-f 表示正在调用sed脚本文件
默认情况,sed处理完文本将输入文件打印到标准输出;一旦加上-n选项,sed就不再打印输入文件,而只打印处理结果


当向sed命令传递多个编辑命令时,在每个编辑命令前需要加上-e选项




sed文本定位方法


x x为指定行号
x,y 指定从x到y的行号范围
/pattern/ 查询包含模式的行
/pattern/pattern/ 查询包含两个模式的行
/pattern/,x 从与pattern的匹配行到x号行之间的行
x,/pattern/ 从x号行到与pattern的匹配行之间的行
x,y! 查询不包括x和y行号的行




sed编辑命令




p 打印匹配行
= 打印文件行号
a\ 在定位行号之后追加文本信息
i\ 在定位行号之前插入文本信息
d 删除定位行
c\ 用新文本替换定位文本
s 使用替换模式替换相应模式
r 从另一个文件中读文本
w 将文本写入到一个文件
y 变换字符
q 第一个模式匹配完成后退出
l 显示与八进制ASCII代码等价的控制字符
{} 在定位行执行的命令组
n 读取下一个输入行,用下一个命令处理新的行
h 将模式缓冲区文本拷贝到保持缓冲区
H 将模式缓冲区文本追加到保持缓冲区
x 互换模式缓冲区和保持缓冲区内容
g 将保持缓冲区内容拷贝到模式缓冲区
G 将保持缓冲区内容追加到模式缓冲区


# cat insert.sed 
#!/bin/sed -f
/^root:/i\
We insert a new line.
/^root:/a\
add a new line.(kiki)


/uucp:/c\
ccie


w /tmp/test.txt


# ./insert.sed /etc/passwd |head




sed文本定位
查找到与模式匹配的文本行,这是sed命令经常使用的命令
经常需要结合正则表达式




sed基本编辑(1)
-a 追加文本:匹配行后面插入   
-i  插入文本:匹配行前面插入
-s 修改文本:将所匹配的文本行利用新文本替代 
-d 删除文本:将指定行或指定行范围进行删除






sed基本编辑(2)
sed替换文本操作将所匹配的文本行利用新文本替换,替换文本与修改文本功能有相似之处,它们之间的区别在于:替换文本可以替换一个字符串,而修改文本是对整行进行修改
替换文本的格式为:
s/被替换的字符串/新字符串/[替换选项]
g 表示替换文本中所有出现被替换字符串之处
p 与-n选项结合,只打印替换行
w 文件名 表示将输出定向到一个文件


sed基本编辑(3)
默认情况下,sed s命令将替换后的全部文本都输出,如果要求只打印替换行,需要结合使用-n和p选项,命令格式如下:
sed -n ‘s/被替换的字符串/新字符串/p’ 输入文件






sed基本编辑(4)
从文件中读入文本,r选项
退出命令: q选项表示完成指定地址的匹配后立即退出
变换命令: y选项表示字符变换,它将一系列的字符变换为相应的字符
sed ‘y/被变换的字符序列/变换的字符序列/’ 输入文件
sed y命令要求被变换的字符序列和变换的字符序列等长,否则sed y命令将报错
sed编辑命令中的{}符号可以指定在定位行上所执行的命令组,它的作用与sed的-e选项类似,都是为了在定位行执行多个编辑命令




[root@i tmp]# cat passwd 
HAHA
ROOT
root
root


[root@i tmp]# sed 'y/root/kxxs/' passwd 
HAHA
ROOT
kxxs
kxxs







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值