sed
非交互性的文本流编辑器,它编辑文件或标准输入导出的文本拷贝,标准输入可能来自键盘,文件重定向,字符串,变量或者一个管道文本
注意:sed并不与初始化文件打交道,它操作的是一个拷贝,然后所有的改动如果没有重定向到一个文件,将输出到屏幕
sed命令的使用格式
[root@centos7-2 ~]# sed [-nefr] [动作]
# sed [option] scripts file1 file2 ...
# sed [option] 'AddressCommand' file1 file2 ...
Address:表示对哪些行进行处理
Command:操作命令
option选项:-nefr
sed命令 option选项:-nefr
-n :不再显示模式空间中的内容(默认显示)
-i : 直接修改原文件
-e : 同时执行多个匹配操作
-f :FILE 将多个AddressCommand保存至文件中,每行一个AddressComma
[root@centos7-2 ~]# sed -e '/^#/d' -e '/^$/d' /etc/fstab
//找出 fstab文件, 开关是#(注释行)与空行。
[root@centos7-2 ~]# cat /tmp/file.txt
/^#/d
/^$/d
[root@centos7-2 ~]# sed -f /tmp/file.txt /etc/fstab
//找出 fstab文件, 开关是#(注释行)与空行。
-r:表示使用扩展正则表达式
[root@centos7-2 ~]# sed -r 's|l(..e)|L1|' /tmp/1.txt
--follow-symlinks 修改软链接文件时
[root@centos7-2 ~]# sed --follow-symlinks -i 's|hello|hi|' /tmp/2.txt
sed命令 Address表示方法:
1、StartLine,EndLine
1,100 \前100行
1,$ \全文
3,10 \3到10行
2、LineNumber
3 \第3行
3、StartLine,+n
5,+2 \从第五行开始起,后2行。 5行6行
/root/,+2 \匹配root的那行与后一行。
4、/正则表达式/
/root/
/bash$/
5、 /正则表达式1/, /正则表达式2/
第1次被Regex1匹配的行开始,到第1次被Regex2匹配的行中间的所有行
sed命令 Command:
d 删除符合条件的行
# sed '1,2d' /etc/inittab
删除文件中包含oot的行
# sed '/oot/d' /etc/fstab
删除第1行及其后2行
# sed '1,+2d' /etc/fstab
删除第1行
# sed '1d' /etc/fstab
删除以/开头的行
# sed '/^//d' /etc/fstab
p 显示符合条件的行
显示以/开头的行
# sed -n '/^//p' /etc/fstab
a string 在符合条件的行后追加新行,string为追加的内容
在以/开头的行后面追加# hello world
# sed '/^//a # hello world' /etc/fstab
在以/开头的行后面追加两行内容,分别为# hello worl # hello linux
# sed '/^//a # hello world # hello linux' /etc/fstab
i string 在符合条件的行前添加新行,string为追加的内容
在文件第1行添加# hello world
# sed '1i # hello world' /etc/fstab
c string 替换指定行的内容
将文件中最后一行内容替换为End Of File
# sed '$c End Of File' /1.txt
# sed '7c SELINUX=disabled' /etc/sysconfig/selinux
= 用于显示每一行的行号
显示/etc/passwd文件最后一行的行号
# sed -n '$=' /etc/passwd
49
r file_name 将指定文件的内容添加到符合条件的行的后面
在文件的第2行后追加/etc/issue文件的内容
# sed '2r /etc/issue' /etc/fstab
w file_name 将符合条件的内容另存到指定文件中
将以UUID开头的行另存为到/1.txt中
# sed '/^UUID/w /1.txt' /etc/fstab
s/regex/string/[修饰符] 查找并替换 默认,只替换每一行第1次出现的字符
修饰符:g:替换每一行所有的字符
i:忽略大小写
简单案例
cuttest.sh
name age height
wang 18 68
li 33 78
he 22 67
zhao 27 58
sed -n '2,3p' cuttest.sh
返回:第二三行
wang 18 68
li 33 78
df -h | sed -n '2p'>sedtest.txt 将磁盘使用情况的第二行重定向到settest.txt
原文链接 https://blog.51cto.com/14154700/2401082
原文链接 https://blog.csdn.net/shudaqi2010/article/details/76613421
如侵权请联删