Linux||sed命令使用讲解
2023-02-26 10:16:28 时间
sed是stream editor的缩写,译为"流编辑器",一般用来对文本数据进行增删改查即新增、删除、替换、查找。
与其他命令不同的是sed命令在处理数据之前,需要预先提供一组规则,sed会按照此规则来处理数据。处理时,sed 会把要处理的行存储在缓冲区中,接着用 sed 命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。这个缓冲区被称为“模式空间”(pattern space)。
用法: sed [参数] 操作 [文件]
常见参数
- -n:只显示经过sed处理的行
- -e:执行多个命令
- -f:执行含有sed命令的文件
- -r:支持扩展正则表达式(默认为基础正则表达式)
- -i:直接修改读取的文件内容,不输出
命令
- -a:新增,在当前行的后一行新增a后面的字符串
- -c:替换
- -d:删除
- -i:插入,在当前行的前一行新增i后面的字符串
- -p:打印,将选择的数据打印出来,通常与-n同时使用
- -s:替换,常搭配正则表达式;如2,5s/are/is/g
看似简单的用法其实复杂的很!参数我们已经提到了,那操作是什么呢?
操作:范围+命令
范围设定,可以采用两种不同的方式来表达:
- 指定行数:比如'3,5'’'表示第三至第五行;而'3,$'示第三行至文件最后一行。
- 模式匹配:比如/^[^Aa]/表示匹配行首不是以A或a开头的行。
操作必须用单/双引号扩住,[]的内容可以省略。
接下来给大家举几个例子,我在test.txt文件中写入了这么3句话
a新增
在第二行后新增有what的一行
sed "2a what" test.txt
- 在第二行后新增多行what:sed "2a what\what\what" test.txt
c替换
将第二和第三行替换成what
sed "2,3c what" test.txt
d删除
将第二和第三行删除
sed "2,3d" test.txt
- 删除第二至最后一行 sed "2,$d" test.txt
i插入
在第二行前新增有what的一行
sed "2i what" test.txt
p打印
只打印第一和第二行
sed -n "1,2p" test.txt
s替换
将第一至第三行中的is替换成are
sed "1,3s/is/are/g" test.txt
现在看起来挺简单的对吧?那不如看几个进阶练习题
## 进阶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
更多内容请点击左下方阅读原文~
参考资料
- C语言中文网
http://c.biancheng.net/linux/sed.html
- 鸟哥的Linux私房菜
相关文章
- Day1 - 新手上路装备-雪雪子
- 安全云盘实至名归,天翼云盘踔厉守护数字资产安全
- “一致行动”对马云究竟有多重要
- 如何挑选一台云服务器
- 不要慌,我有亿点小建议,万字长文!
- 第一道完全是自己写出来的算法题!
- 加油,会越来越快的!
- 【链表篇】LeetCode 876、链表的中间结点
- LeetCode 82:删除排序链表中的重复元素 II
- LeetCode 83:删除排序链表中的重复元素
- 不要乱介绍项目经验!小心扣分!
- 字节实习一面,不画图,真的想不清楚!
- 字节面试题,最优解通过!
- 一杯茶,一根烟,一道题目做一天。
- 环形链表II的解法与一些证明!
- 持续构建开放中立IoT生态,CES 2023“Tuya day”引航全球智能产业生态圈
- Hello 算法
- 为什么说单件流是丰田的隐性力量?
- 有效的括号
- Kaizen与变革管理中持续改进的理念是什么