sed 命令

sed [-nefri] [动作]

选项与参数
-n 使用安静(silent)模式,在一般 sed 的行为中,所有来自 STDIN 的数据都会被打印到屏幕上,加上 -n 选项后,则只有经过sed处理之后的行才会被打印出来
-e <script>或–expression=<script> 以选项中指定的script来处理输入的文本文件。可以用这个选项来执行多个动作
-f <script文件>或–file=<script文件> 以选项中指定的script文件来处理输入的文本文件。
-r 使用扩展正则表达式,默认是使用基础正则表达式
-i 直接修改读取的文件,而不是输出到屏幕 (慎用!这个会修改源文件)

动作说明 [n1,n2] function
n1,n2 表示需要进行动作的行,例如 10,20[function] 表示只在10到20行进行操作
function 说明

a 在行后新增,a 的后面可以接字符串,字符串会在对应行的下一行
c 整行取代, c 后面可以接字符串,这些字符串会取代 n1 到 n2 之间的行
d 删除
i 插入,i 后面可以接字符串,这些字符串会对应行的上一行出现
p 打印,通常跟 -n 一起配合,将符合要求的数据打印出来
s 行内取代,后面可以接正则,例如 1,20s/old/new/g 将 1 到 20 行中的old替换为new,/g表示全部替换,不加的话只会替换匹配到的一个字符串
y 命令表示转换。该命令与 tr 命令相似,字符按照一对一的方式从左到右进行转换。例如 y/abc/ABC/,会把小写字母转换成大写字母, a–>A,b–>B,c–>C。例如: sed ‘1,3y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/’ ceshi.txt 将ceshi.txt文件的1到3行小写替换为大写

新增与插入

nl /etc/passwd | sed '2,10a drink tea
在第2-10行的每一行后面插入一行: drink tea
sed '3i hello 在第三行之前插入一行: hello

删除

sed '4,$d' test.txt 删除 test.txt 第4到最后一行

行内替换

sed '3,10s/hello/world/g' ceshi.txt 将 ceshi.txt 文件第3-10行中的hello替换为world
如果两个动作都是替换,那么前一个替换的结果对第二个替换是有影响的,第二个动作的源是第一个替换处理之后的结果。

-e 示例

-e 可以在同一行中执行多个指令
` sed -e ‘1,10s/a/w/’ -e ‘1d’ ceshi.txt 先将 ceshi.txt 的第1到10行的首次出现的 a 替换为w,然后删除第一行。

显示打印

显示 n-m 行之间的内容

sed -n '1,1000p' catalina.out
显示文件 catalina.out从 1 到1000 的数据

显示从 n 行到文件末尾的内容

sed -n '1000,$p' catalina.out
显示文件 catalina.out 从 1000 行到末尾的内容, $ 表示最后一行

显示两个字符之间的内容

sed -n '/2018-03-08 15:05/,/2018-03-08 15:18/p' catalina.out > 1.txt
将文件 catalina.out 中 2018-03-08 15:05 字符所在行到 2018-03-08 15:18 所在行之间的内容显示出来。

打印某个字符所在行到最后一行

sed -n '/2018-03-08 15:05/,$p' catalina.out

打印某个字符所在行之后 n 行

sed -n '/ftp/,+3p' 打印匹配行之后3行

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值