Day04-Sed命令
一:Sed命令
sed命令:字符流编辑器工具-按照每行中的字符进行处理操作
1):擅长对行进行操作处理
2):擅长将文件的内容信息进行修改调整/删除
编写脚本:修改文件内容信息时
3):向文件中添加信息(增/删/改/查)
备注(主要应用配置文件或者日志文件;大文件处理速度慢)
二:Sed语法格式
sed 参数 条件-处理 处理的文件
sed 参数 条件-处理 ; 条件处理
0 ) sed执行流程
sed命令执行过程核心原则:找什么信息.做什么事
找什么信息==定义查找条件
做什么事情==操作执行命令(替换,删除,增加)
1)sed命令实践操作
sed命令查询信息方法
根据文件内容的行号进行查询:
根据文件内容的信息进行查询:
sed 使用逗号,表示:从哪开始,哪都结束
1 [root@localhost oldboy]# sed -n '/oldboy/p' person.txt 2 101,oldboy,CEO 3 4 查找olbody行的信息
1 [root@localhost oldboy]# sed -n '/oldboy/,/Alex/p' person.txt 2 101,oldboy,CEO 3 102,zhaoyao,CTO 4 103,Alex,COO 5 6 根据内容信息显示多行(连续)
1 [root@localhost oldboy]# sed -n '/oldboy/p;/Alex/p' person.txt 2 101,oldboy,CEO 3 103,Alex,COO
根据内容过滤信息,满足一个条件显示,输出多行内容(不连续)
1 [root@localhost oldboy]# sed -n '3p' person.txt 2 103,Alex,CO 3 4 根据指定行,显示
sed命令添加信息
1 [root@localhost oldboy]# sed '1i100,oldboy,UFO' person.txt 2 100,oldboy,UFO 3 101,oldboy,CEO 4 102,zhaoyao,CTO 5 103,Alex,COO 6 104,yy,CFO 7 105,feixue,CTO 8 9 在第一行添加信息;添加的信息只是在内存中,并没有添加到文件中,如果要添加到磁盘文件中需要sed -i '-1i106,oldgirl,UFO' person.txt
1 [root@localhost oldboy]# sed '$a106,oldgirl,UFO' person.txt 2 101,oldboy,CEO 3 102,zhaoyao,CTO 4 103,Alex,COO 5 104,yy,CFO 6 105,feixue,CTO 7 106,oldgirl,UFO 8 9 在文件最后一行添加信息;append附件信息
1 sed -e '/oldboy/ioldgirl_1' -e '/oldboy/aolddog' person.txt
-e : 可以在同一行里执行多条命令
-n : 取消默认输出
-r : 识别扩展正则
-i : 真实编辑文件(将内存中的信息覆盖到磁盘中)
-a : 附件信息,在指定信息后面附加新的信息
-d : 删除指定的行
-c : 替换修改指定一整行信息
1 [root@localhost oldboy]# sed '$a107,Neal\n108_Pan' person.txt
添加多行信息,编写配置文件添加多行配置
sed删除信息方法
1 sed '3d' person.txt 2 3 删除某一行
1 sed '2,3d' person.txt 2 3 删除多行
1 sed '/oldboy/d' person.txt 2 3 删除文件中带有oldboy的行
1 [root@localhost oldboy]# sed '7d;8d' person.txt 2 3 删除指定多行
1 sed -n '/^$/!p' person.txt 2 3 不显示文件中的空行 4 5 sed '/^$/d' person.txt
sed修改信息方法
1 sed 's#原有内容#修改后内容#g' 文件信息
1 sed 's/#oldgirl/old/g' person.txt 2 3 替换文件中带有#号的内容,需要使用撬棍
sed -i.bak 's#old#Neal#g' person.txt 修改之前先进行备份
注意:sed -ni 参数不能同时出现,会将文件内容进行清空
ls oldboy*.txt | sed -r 's#(.*)txt#rm &\1jpg#g' |bash 批量修改文件名 & 类似xargs的[]
1 批量重名专业命令: 2 3 rename .txt .jpg oldboy*.txt 4 5 命令 文件名称需要修改的部分信息 修改成什么信息 将什么样的文件进行修改