Linux sed常见语法和用法(增删改查)

1. 准备一个非空文件

首先应该知道,sed无法操作空文件,因此如果文件为空,则需要先添加内容。
如果没有非空文件,可以使用echo指令先创建一个:

echo 'Hello Linux' > Hello.txt
cat Hello.txt

2. 常用语法

sed [OPTION]... {script-only-if-no-other-script} [input-file]...
常用参数说明:

  • -n, --quiet, --silent :仅显示script处理后的结果
  • -e script, --expression=script :以选项中指定的script来处理输入的文本文件
  • -f script-file, --file=script-file :以选项中指定的script文件来处理输入的文本文件
  • -i[SUFFIX], --in-place[=SUFFIX] :直接修改源文件(如果提供SUFFIX则进行备份)
  • -h--help :显示帮助
  • -V--version :显示版本信息

动作说明:

  • a :新增(Append), a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
  • i :插入(Insert), i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
  • d :删除(Delete),因为是删除,所以 d 后面通常不接任何内容;
  • s :替换(substitute),可以直接进行取代的工作!通常这个 s 的动作可以搭配正规表示法:s/regexp/replacement/,例如:1,20s/old/new/g

注:上述仅列出了常用的参数和动作,完整的请使用man sed或者sed -h获取

3. 查

查询这里使用cat:

cat Hello.txt 

结果为:

Hello Linux

4. 增

4.1. 先重定向到临时文件再覆盖

执行如下指令:

sed -e 1a\newLine Hello.txt

或者把\去掉也行,直接就是:

sed -e 1anewLine Hello.txt

执行完毕之后会提示

Hello Linux
newLine

但是查看文件却发现并没有更改,此时怎么办呢?我们可以先重定向到一个临时文件:

sed -e 1a\newLine Hello.txt > Hello.txt.temp

然后再用临时文件覆盖原文件:

mv Hello.txt.temp Hello.txt -f

4.2. 直接修改源文件

如果想直接修改源文件,而没有先修改后覆盖的过程,可以用下面的命令:

sed -i 1a\newLine Hello.txt

这样,就直接修改了Hello.txt文件,再次查看时同样会发现已经修改:

cat Hello.txt 
Hello Linux
newLine

4.3. 包含空格的字符串处理

如果要添加的内容包含空格怎么办呢?这是我们只需要把所添加的字符串使用双引号包起来就可以了,比如我想要添加一个new Line,那么相应的指令为:

sed -i 1a"new Line" Hello.txt

5. 删

删除第2行:

sed -i 2d Hello.txt

查看

cat Hello.txt 

会发现原先的第二行内容已删除

Hello Linux

6. 改

Hello Linux/I am Coco改成:

sed -i 's/Hello Linux/I am Coco/g' Hello.txt

查看

cat Hello.txt 

会发现已经更改:

I am Coco
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

COCO56(徐可可)

建议微信红包:xucoco56

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值