- 工信部备案号 滇ICP备05000110号-1
- 滇公安备案 滇53010302000111
- 增值电信业务经营许可证 B1.B2-20181647、滇B1.B2-20190004
- 云南互联网协会理事单位
- 安全联盟认证网站身份V标记
- 域名注册服务机构许可:滇D3-20230001
- 代理域名注册服务机构:新网数码
注:sed 是逐行处理的
sed文本处理工具的用法:
用法1:前置命令 | sed [选项] '条件指令'
用法2:sed [选项] '条件指令' 文件.. ..
相关说明如下:
条件可以是行号或者/正则/
没有条件时,默认为所有条件
指令可以是增、删、改、查等指令
默认sed会将所有输出的内容都打印出来,可以使用-n屏蔽默认输出
选项中可以使用-r选项,让sed支持扩展正则
下面是介绍一些选项和基本用法
sed命令的常用选项如下:
-n(屏蔽默认输出,默认sed会输出读取文档的全部内容)
-r(让sed支持扩展正则)/正则/
-i(sed直接修改源文件,默认sed只是通过内存临时修改文件,源文件无影响)
sed 的常用条件指令
p 打印
d 删除
s/old/new/ 替换 也可用来做一些字符串的删除
下面介绍一下具体的用法
指令p
[root@svr5 ~]# sed '1p' /etc/hosts 打印文件的第一行 但由于没有加-n选项所以默认会打印整个文件
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
[root@svr5 ~]# sed -n '1p' /etc/hosts 打印文件的第一行 (屏蔽默认输出)
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
01. [root@svr5 ~]# sed -n '3,5p' /etc/passwd 打印第3到5行
[root@svr5 ~]# sed -n '3p;5p' /etc/passwd 打印第3和5行
[root@svr5 ~]# sed -n '3,+10p' /etc/passwd 打印第3以及后面的10行
[root@svr5 ~]# sed -n '1~2p' /etc/passwd 打印奇数行 【这里就是打印 1 1+2 1+2+2......】
[root@svr5 ~]# sed -n '2~2p' /etc/passwd 打印偶数行
[root@svr5 ~]# sed -n '$=' /etc/passwd 输出文件的行数
d 指令同p指令 测试时可不加-n选项可以直观看出效果
s/old/new/ 替换指令
[root@svr5 ~]# vim test.txt //新建素材
2017 2011 2018
2017 2017 2024
2017 2017 2017
[root@svr5 ~]# sed 's/2017/xxxx/' test.txt 把每行的第一个2017替换成xxxx
[root@svr5 ~]# sed 's/2017/xxxx/g' test.txt 把每行所有的2017替换成xxxx
[root@svr5 ~]# sed 's/2017/xxxx/2' test.txt 把每一行的第二个2017替换成xxxx
[root@svr5 ~]# sed 's/2017//2' test.txt 删除每一行的第二个2017
下面介绍一下sed的一些正则用法
[root@svr5 ~]# sed -n '/^root/p' /etc/passwd 找出以root开头的并打印
[root@svr5 ~]# sed -n '/bash$/p' /etc/passwd 找出以bash结尾的并打印
[root@svr5 ~]# sed 's#/bin/bash#/sbin/sh#' /etc/passwd 将/bin/bash替换成/sbin/sh 【这里相当于s#old#new#】
[root@svr5 ~]# cat nssw.txt 新建素材
Hello the world
ni hao ma beijing
[root@svr5 ~]# sed 's/.//2 ; s/.$//' nssw.txt
删除文件中每行的第二个、最后一个字符分两次替换操作,第一次替换掉第2个字符,第二次替换掉最后一个字符
[root@svr5 ~]# sed -r 's/^(.)(.*)(.)$/\3\2\1/' nssw.txt 将文件中每行的第一个、倒数第1个字符互换
将每行文本拆分为“第1个字符”、“中间的所有字符”、“倒数第1个字符”三个部分,然后通过替换操作重排顺序为“3-2-1”
[root@svr5 ~]# sed 's/([A-Z])/[\1]/g' nssw.txt 为文件中每个大写字母添加括号使用 “()”可实现保留功能
注:1.正则的用法用法还有很多就不一 一列举了具体可以按实际的要求操作sed默认不支持扩展正则所以使用扩展正则时需加-r选项
2.建议在使sed修改文件是先不要加-i选项测试无误后方可加上-i选项
售前咨询
售后咨询
备案咨询
二维码
TOP