linux-sed命令
2018-08-26 17:15:12来源:博客园 阅读 ()
第1章 sed基础
1.1 sed的选项 stream editor 流编辑器
-r 支持扩展正则
-n 取消默认输出
-i 直接修改不输出到桌面
-i.bak 备份
1.2 sed的书写格式
sed '条件命令'
sed 'pattern命令'
sed '模式命令'
1.3 sed命令执行过程
1.读取文件内容第1行
2.是否满足条件
1).满足条件 执行对应的命令 p s d
2).不满足 继续第1步
3.截止到文件的最后一行
第2章 sed命令的使用
sed增删改查 不加i选项只会把修改内容输出到并没有真正修改,加上i选项会直接修改文件内容
2.1 sed 增加 cai
c replace 替换
a append 追加
i insert 插入
2.1.1 在person.txt文件第三行下追加12306,xiao,UFO
查看person.txt文件
[root@zeq lx]# cat person.txt 101,zeq,CEO 102,zhang,CTO 103,Love,COO 104,yy,CFO 105,faker,CIO 110,ahao,COCO
第三行下追加12306,xiao,UFO
[root@zeq lx]# sed '3a12306,xiao,UFO' person.txt a追加,3a在第三行下追加 101,zeq,CEO 102,zhang,CTO 103,Love,COO 12306,xiao,UFO 104,yy,CFO 105,faker,CIO 110,ahao,COCO
2.1.2 在person.txt文件第三行上插入12306,xiao,UFO
[root@zeq lx]# sed '3i12306,xiao,UFO' person.txt 101,zeq,CEO 102,zhang,CTO 12306,xiao,UFO 103,Love,COO 104,yy,CFO 105,faker,CIO 110,ahao,COCO
2.1.3 把person.txt文件第三行替换成12306,xiao,UFO
[root@zeq lx]# sed '3c12306,xiao,UFO' person.txt 101,zeq,CEO 102,zhang,CTO 12306,xiao,UFO 104,yy,CFO 105,faker,CIO 110,ahao,COCO
2.1.4 在文件最后一行增加
12306,xiao,UFO
12580,tao,XO
[root@zeq lx]# sed '$a12306,xiao,UFO\n12580,tao,XO' person.txt $最后一行 \n回车 101,zeq,CEO 102,zhang,CTO 103,Love,COO 104,yy,CFO 105,faker,CIO 110,ahao,COCO 12306,xiao,UFO 12580,tao,XO
2.2 sed 删除 d
2.2.1 删除第2行到第5行
[root@zeq lx]# sed '2,5d' person.txt 101,zeq,CEO 110,ahao,COCO
2.2.2 删除从yy开始的行到文件结尾的内容
[root@zeq lx]# sed '/yy/,$d' person.txt $文件结尾 101,zeq,CEO 102,zhang,CTO 103,Love,COO
2.2.3 删除包含ahao的行
[root@zeq lx]# sed '/ahao/d' person.txt 101,zeq,CEO 102,zhang,CTO 103,Love,COO 104,yy,CFO 105,faker,CIO
2.2.4 删除不包含ahao的行
[root@zeq lx]# sed '/ahao/!d' person.txt !取反,排除 110,ahao,COCO
2.3 sed 替换 's###g'
2.3.1 替换掉所有的数字
[root@zeq lx]# sed 's#[0-9]##g' person.txt ,zeq,CEO ,zhang,CTO ,Love,COO ,yy,CFO ,faker,CIO ,ahao,COCO
2.3.2 替换掉每行中的第一个数字
[root@zeq lx]# sed 's#[0-9]##' person.txt sed 's#[0-9]##' 不加g,默认是匹配到每行第一个数字 sed 's#[0-9]##' 匹配每行第二个数字 01,zeq,CEO 02,zhang,CTO 03,Love,COO 04,yy,CFO 05,faker,CIO 10,ahao,COCO
2.3.3 后向引用 取出ip地址
[root@zeq ~]# ifconfig eth0 |sed -rn '2s#^.*r:(.*) Bc.*#\1#gp' 10.0.0.200
[root@zeq ~]# ifconfig eth0 |awk -F'[ :]+' 'NR==2{print $4}' 10.0.0.200
[root@zeq ~]# ifconfig eth0 |awk -F'addr:| Bc' 'NR==2{print $2}' 10.0.0.200
[root@zeq ~]# ifconfig eth0 |awk -F'[^0-9.]+' 'NR==2{print $2}' 10.0.0.200
2.4 sed 查
2.4.1 显示文件的第5行
[root@zeq ~]# sed -n 5p person.txt 105,faker,CIO
2.4.2 显示文件的第2行到第5行
[root@zeq ~]# sed -n '2,5p' person.txt 102,zhang,CTO 103,Love,COO 104,yy,CFO 105,faker,CIO
2.4.3 显示文件最后一行
[root@zeq ~]# sed -n '$p' person.txt 110,ahao,COCO
2.4.4 显示文件中包含zeq的行
[root@zeq ~]# sed -n '/zeq/p' person.txt 101,zeq,CEO
2.4.5 显示文件中从包含101的行到105的行
[root@zeq ~]# sed -n '/101/,/105/p' person.txt 101,zeq,CEO 102,zhang,CTO 103,Love,COO 104,yy,CFO 105,faker,CIO
2.4.6 特殊写法:显示文件的第1和4行和5行
[root@zeq ~]# sed -n '1p ;4p; 5p' person.txt 101,zeq,CEO 104,yy,CFO 105,faker,CIO
2.4.7 显示有规律的行
[root@zeq ~]# seq 10 |sed -n '1~2p' 1 3 5 7 9
2.5 sed命令中使用变量
root@zeq ~]# x=zeq 设置x变量为zeq [root@zeq ~]# y=zeq1 设置y变量为zeq1 [root@zeq ~]# sed 's#$x#$y#g' person.txt 101,zeq1,CEO 102,zhang,CTO 103,Love,COO 104,yy,CFO 105,faker,CIO 110,ahao,COCO 12306,xiao.UFO
2.5.1 把文件person.txt文件中的每一行的内容 替换为对应的行号
for n in {1..7} 这里使用的shell脚本中的for循环 do sed -i.bak "${n}s#.*#$n#g" person.txt done
2.5.2 批量重命名:删除文件名中的html_
touch zeq_html_{01..10}.jpg
方法1 命令行格式 [root@zeq data]# ls *.jpg|sed -r "s#(.*)(_.*)#mv & zeq\2#g"|bash
方法2 for循环 for i in {01..10} do mv zeq_${i}.jpg zeq_html_${i}.jpg done
方法3 rename rename html_ "" *.jpg rename 修改谁 改为什么 修改什么文件
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- awk命令详解 2020-06-10
- 运行 docker .... 命令报错 2020-06-10
- 一个骚命令防止你的文件被误删除! 2020-06-08
- ubuntu之命令相关问题 2020-06-06
- linux的常用命令 2020-06-04
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash