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 命令    文件名称需要修改的部分信息    修改成什么信息    将什么样的文件进行修改

 

posted @ 2020-09-29 10:13  龙门、三少  阅读(159)  评论(0编辑  收藏  举报