Linux||sed命令

2021-11-20  本文已影响0人  小汪Waud

以下内容首发自公众号“小汪Waud”。

sed是stream editor的缩写,译为"流编辑器",一般用来对文本数据进行增删改查即新增、删除、替换、查找。

与其他命令不同的是sed命令在处理数据之前,需要预先提供一组规则,sed会按照此规则来处理数据。处理时,sed 会把要处理的行存储在缓冲区中,接着用 sed 命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。这个缓冲区被称为“模式空间”(pattern space)。

用法: sed [参数] 操作 [文件]

常见参数

命令

看似简单的用法其实复杂的很!参数我们已经提到了,那操作是什么呢?

操作:范围+命令

范围设定,可以采用两种不同的方式来表达:

  1. 指定行数:比如'3,5'’'表示第三至第五行;而'3,$'示第三行至文件最后一行。
  2. 模式匹配:比如/[Aa]/表示匹配行首不是以A或a开头的行。

操作必须用单/双引号扩住,[]的内容可以省略。

接下来给大家举几个例子,我在test.txt文件中写入了这么3句话

a新增

在第二行后新增有what的一行

c替换

将第二和第三行替换成what

d删除

将第二和第三行删除

i插入

在第二行前新增有what的一行

p打印

只打印第一和第二行

s替换

将第一至第三行中的is替换成are

现在看起来挺简单的对吧?那不如看几个进阶练习题

## 进阶1

# 查看/etc/passwd的前5行
(base) zwang@ken_bioinfo:~$ head -n 5 /etc/passwd 
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync

# 使用sed命令将冒号及后面的内容删掉
(base) zwang@ken_bioinfo:~$ head -n 5 /etc/passwd|sed 's/:.*$//' 
root
daemon
bin
sys
sync
## 进阶2

# 查看test.txt文件
(base) zwang@ken_bioinfo:~$ cat test.txt
This is a test file
Linux is not hard to learn
So,don't worry!

# 将带有file的行打印出来
(base) zwang@ken_bioinfo:~$ cat test.txt | sed -n '/file/p'
This is a test file

参考资料

  1. C语言中文网

http://c.biancheng.net/linux/sed.html

  1. 鸟哥的Linux私房菜
上一篇 下一篇

猜你喜欢

热点阅读