【Linux】sed 命令最全解析

sed是一个流编辑器,用于对文件或输入流执行各种文本转换,功能强大且效率高。

主要用于对数据行进行替换、删除、新增、修改等。

一、sed 语法格式

sed [-nefri] 'command' 输入文本        

参数选项

常见参数 说明
-n 抑制输出,结合p指令打印特定行。
默认sed会列出所有指定内容,加上 -n 参数后,则只有经过sed 特殊处理的那一行才会被列出来。
-i 直接修改文件内容,而且不进行任何输出,慎用!
默认情况下 sed 并不直接修改文件内容,只是把结果进行标准输出,文件内容实际没有变化。
-e 使用后面的动作指令编辑文件内容
-f 直接将 sed 的动作写在一个档案内, -f filename 则可以执行 filename 内的sed 动作;

动作指令

  • 使用时要用单引号把动作指令内容括起来;
  • 若指令内容包含变量,则用双引号括起来。
常用动作 说明
p print,打印,列出指定的内容,通常与 -n 参数一起使用
a after,新增,后面接字符串,并显示在新的一行(目前的下一行)
i insert,插入, 后面接字符串,并显示在新的一行(目前的上一行)
c change,替换一行或多行的整行内容,后面接字符串,用于取代 n1,n2 之间的行
s supersede,stead,替换一行或多行中的部分内容,通常搭配正规表达式
常用方式: 1,20s/old/new/g
d delete,删除,后面通常不接任何字符

二、参数使用举例

(假设我们有一文件名为input)

1、输入文件的几种方式

sed 命令中的文件参数可以是文件名,也可以是来自管道的输入。

下面几种方式是等价的:

sed 's/hello/world/g' input > output
sed 's/hello/world/g' < input> output
cat input | sed 's/hello/world/g' - > output
cat input | sed 's/hello/world/g' > output   # - 可以省略

2、-n 抑制输出

默认情况下,sed打印所有已处理的输入(已通过命令修改/删除的输入除外)。

使用 -n 抑制输出,结合p指令可以打印特定行。

仅打印输入文件的第45行:
sed -n '45p' input

3、-i 修改文件内容且不进行输出

  • 直接修改文件内容,而且不进行任何输出,慎用!
  • 可以与其它指令结合使用。
  • 单独使用其它参数和指令都不会直接修改文件内容。
  • 当文件很大时,使用类似 vim 的命令修改文件很不方便,此时使用 sed -i 就非常方便,可以不用打开文件,直接实现修改/取代的功能。

查看input文件原内容:

$ cat input
hello ehllo hello
hello abadbsabf
a123gdsgahello

sed 不带 -i 参数时进行替换指令

会输出替换后的结果,且再次查看input内容,原文件未修改。

  • 4
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值