出门莫恨无人随,书中车马多如簇。这篇文章主要讲述16. sed命令相关的知识,希望能为你提供帮助。
sed追加
sed可以把文本中的一些东西给改了
sed可以把文本中某些特定的部分改掉
set基本用法
格式
sed [option]... \'script;
script;
...\' [inputfile...]
常用选项
-n 不输出模式空间内容到屏幕,即不自动打印
-e 多点编辑
-f FILE 从指定文件中读取编辑脚本
-r, -E 使用扩展正则表达式
-i.bak 备份文件并原处编辑
-s将多个文件视为独立文件,而不是单个连续的长文件流
#说明:
-ir 不支持
-i -r 支持
-ri支持
-ni会清空文件
例1:
//打印第一行,由于默认执行的是自动打印,所以多打了一遍
[20:59:27 root@centos8] ~]#sed \'1p\' /etc/issue
\\S
\\S
Kernel \\r on an \\m//-n取消了自动打印
[21:05:36 root@centos8] ~]#sed -n \'1p\' /etc/issue
\\S
例2:sed打印eth0的ip地址
[21:06:02 root@centos8] ~]#ifconfig eth0
eth0: flags=4163<
UP,BROADCAST,RUNNING,MULTICAST>
mtu 1500
inet 10.0.0.8netmask 255.255.255.0broadcast 10.0.0.255
inet6 fe80::20c:29ff:fe79:6b19prefixlen 64scopeid 0x20<
link>
ether 00:0c:29:79:6b:19txqueuelen 1000(Ethernet)
RX packets 4915bytes 494155 (482.5 KiB)
RX errors 0dropped 0overruns 0frame 0
TX packets 24449bytes 2328029 (2.2 MiB)
TX errors 0dropped 0 overruns 0carrier 0collisions 0
//sed打印第二行
[21:11:54 root@centos8] ~]#ifconfig eth0 | sed -n \'2p\'
inet 10.0.0.8netmask 255.255.255.0broadcast 10.0.0.255
例3:sed打印seq的输出,分别为第7行和最后一行
[21:12:04 root@centos8] ~]#seq 10 | sed -n \'7p\'
7
//sed里面,$代表文本中的最后一行,在vi中$代表整个行的行尾
[21:17:19 root@centos8] ~]#seq 10 | sed -n \'$p\'
10
例4
#/^:sed里是输出以什么开头的,/^s/就是以s开头的
[21:17:31 root@centos8] ~]#sed -n \'/^s/p\' /etc/passwd
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
systemd-coredump:x:999:997:systemd Core Dumper:/:/sbin/nologin
systemd-resolve:x:193:193:systemd Resolver:/:/sbin/nologin
saslauth:x:992:76:Saslauthd user:/run/saslauthd:/sbin/nologin
sssd:x:984:984:User for sssd:/:/sbin/nologin
setroubleshoot:x:979:978::/var/lib/setroubleshoot:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
例5 找以s开头开始,以h开头结尾的文件
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
systemd-coredump:x:999:997:systemd Core
//由于sed不可逆,它找不到以h为开头的了,所以会一直运行下去直到结束
Dumper:/:/sbin/nologin
systemd-resolve:x:193:193:systemd Resolver:/:/sbin/nologin
tss:x:59:59:Account used for TPM access:/dev/null:/sbin/nologin
polkitd:x:998:996:User for polkitd:/:/sbin/nologin
geoclue:x:997:995:User for geoclue:/var/lib/geoclue:/sbin/nologin
例6 步进:~【16. sed命令】1~2 奇数行
2~2 偶数行
//输出奇数
[09:24:36 root@centos8] ~]#seq 10 | sed -n \'1~2p\'
1
3
5
7
9
//输出偶数
[09:24:45 root@centos8] ~]#seq 10 | sed -n \'2~2p\'
2
4
6
8
10
例7 在第三行后面追加hello[09:41:54 root@centos8] ~]#seq 10 | sed \'3a hello\'
1
2
3
hello
4
5
6
7
8
9
10
......
例8.
script格式:
\'地址命令\'
地址格式:
1. 不给地址:对全文进行处理
2. 单地址:
#:指定的行,$:最后一行
/pattern/:被此处模式所能够匹配到的每一行
3. 地址范围:
#,##从#行到第#行,3,6 从第3行到第6行
#,+##从#行到+#行,3,+4 表示从3行到第7行
/pat1/,/pat2/
#,/pat/
/pat/,#
4. 步进:~
1~2 奇数行
2~2 偶数行
命令
p 打印当前模式空间内容,追加到默认输出之后
Ip 忽略大小写输出
d 删除模式空间匹配的行,并立即启用下一轮循环
a [\\]text 在指定行后面追加文本,支持使用\\n实现多行追加
i [\\]text 在行前面插入文本
c [\\]text 替换行为单行或多行文本
w file 保存模式匹配的行至指定文件
r file 读取指定文件的文本至模式空间中匹配到的行后
= 为模式空间中的行打印行号
! 模式空间中匹配行取反处理
q结束或退出sed
查找替代
s/pattern/string/修饰符 查找替换,支持使用其它分隔符,可以是其它形式:s@@@,s###
替换修饰符:
g 行内全局替换
p 显示替换成功的行
w/PATH/FILE 将替换成功的行保存至文件中
I,i忽略大小写
推荐阅读
- gitlab版本升级
- 性能工具之Jmeter扩展函数及压测ActiveMQ实践
- Lua_数据类型
- 带你掌握java反序列化漏洞及其检测
- 本图文详细教程教你win7与win10哪一个比较好
- 本图文详细教程教你如何取消电脑开机密码
- 本图文详细教程教你windows10企业版激活
- 本图文详细教程教你激活windows10
- 本图文详细教程教你windows10的映像文件还原系统