sed命令的基本使用
一、sed命令介绍
sed(Stream EDitor)是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”,接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着遍历处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。
二、最常用参数选项
选项 | 功能 |
---|---|
-r | 支持拓展正则匹配 |
-i | 直接修改源文件 |
-n | 取消模式空间默认输出 |
关于sed命令的详细参数了解
1 | -n, --quiet, --silent 取消自动打印模式空间 |
三、sed基本用法
1 | ###环境创建### |
1、内容查找
①查看passwd文件的第2到第4行内容;
1 | [root@localhost ~]# sed -n '2,4p' 3.txt # -n取消默认输出 2,4是选择2-4行 p表示打印动作 |
②查看passwd文件中以root开头的行;
1 | [root@localhost ~]# sed -n '/^root/p' 3.txt # -n和动作p基本上是形影不离的 //中可以使用正则,但是拓展正则要加-r |
③忽略大小写,对含有root字符的行打印出来;
1 | [root@localhost ~]# echo this is a test RooT >> 3.txt |
④查找passwd文件中有/bin/bash字符串的行;
1 | [root@localhost ~]# sed -n '/\/bin\/bash/p' 3.txt # 匹配字符中有/时很多时候都需要转义 |
2、增加内容(以行为单位)
①在文件passwd上的第四行后面添加新字符串;
1 | [root@localhost ~]# sed -n '/\/bin\/bash/p' 3.txt |
②passwd第1前追加NANXI
1 | [root@localhost ~]# sed '1 i NANXI' 3.txt |
3、替换内容
①将文件中的bin字符串查找出来替换为***
1 | [root@localhost ~]# sed 's/bin/***/g' 3.txt |
②去除文本中所有的特殊符号和数字并用*分隔
1 | [root@localhost ~]# sed -r 's/[0-9:/]+/*/g' 3.txt |
4、删除内容
①将文本中所有的数字或字母全部删除
1 | [root@localhost ~]# sed 's/[0-z]//g' 3.txt |
②将文本中2~4 行删除并打印输出;
1 | [root@localhost ~]# sed '2,4 d' 3.txt |
③删除原文件第1行
1 | [root@localhost ~]# sed -i '1d' 3.txt |
③修改原文件之前备份
1 | [root@localhost ~]# sed -i.bak '1 d' 3.txt |
5、格式化输出(后向引用)
①批量创建新用户
1 | [root@localhost ~]# echo {1..3}|xargs -n1|sed -r 's/(.*)/useradd user\1/g'|bash |
注意
用sed后向引用的方法创建用户的好处在于,不用再配置环境变量了,非常方便。
最慢的步伐不是跬步,而是徘徊;最快的脚步不是冲刺,而是坚持。
——《人民日报》