首页 > 代码库 > 自学linux指令分析-sed

自学linux指令分析-sed

自学linux指令分析-sed

 

1·命令格式

 sed [-nefri]   /输入文本/‘command’   文件   

 

2·命令参数

 

-n                          取消默认输出

-i                            改变输出的内容

-e                          进行多项编辑,即对输入行应用多条sed命令时使用. 直接在指令列模式上进行 sed 的动作编辑

-f                           指定sed脚本的文件名. 直接将 sed 的动作写在一个档案内, -f filename 则可以执行 filename 内的sed 动作

-r                           sed 的动作支援的是延伸型正则表达式的语法。(预设是基础正则表达式语法

 

常用指令:
        a ∶ 新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)
        c ∶ 取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行
        d ∶ 删除,因为是删除,所以 d 后面通常不接任何内容
         i ∶ 插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行)
         p∶ 打印,亦即将某个选择的资料印出。通常 p 会与参数 sed -n 一起用
         s∶ 取代,可以直接进行替换的工作。通常这个 s 的动作可以搭配正则表达式。例如 1,20s/old/new/g 

 

3、命令功能

 (删除,修改,替换,添加)核心命令之一,(桃园三结义,老二)

 

4、命令范列

 

 

            实列一:已知文件test.txt内容为:

             Test

             liyao

             oldboy

              请给出打印test.txt内容时,不包含oldboy字符串的命令

              命令一:sed /oldboy/d test.txt 

[root@ban tmp]# cat test.txt
test
liyao
oldboy
[root@ban tmp]# sed /oldboy/d test.txt
test
liyao

             命令二: sed -n /oldboy/p test.txt    只显示oldboy

[root@ban tmp]# cat test.txt 
test
liyao
oldboy

[root@ban tmp]# sed -n /oldboy/p test.txt
oldboy

 

[root@ban ~]# sed -n 20,30p ett.txt

20

。。。

30

 

把/目录下及其子目录下所有以扩展名ett.txt结尾的文件中包含oldboylinux的字符串全部替换为dboywindow

[root@ban ~]# echo oldboylinux >ett.txt

[root@ban ~]# cat ett.txt

  • oldboylinux

[root@ban ~]# cp ett.txt  /etc/

[root@ban ~]# cp ett.txt  /opt/

[root@ban ~]# sed s#oldboylinux#oldboywindows#g ett.txt  此条只是改变了输出,但源文件还没有改

(S表示编辑替换

g表示全部替换)

  • oldboywindows

[root@ban ~]# cat ett.txt

Oldboylinux

[root@ban ~]# sed -i s#oldboylinux#oldboywindows#g ett.txt (sed –i表示改变内容)

[root@ban ~]# cat ett.txt

  • oldboywindows

[root@ban ~]# find / -type f -name "ett.txt" 查找原文件

/etc/ett.txt

/root/ett.txt

/opt/ett.txt

[root@ban ~]# find / -type f -name "ett.txt"|xargs sed -i s#oldboylinux#oldboywindows#g  答案

[root@ban ~]# cat /etc/ett.txt

  • oldboywindows

[root@ban ~]# cat /opt/ett.txt

Oldboywindows

[root@ban ~]# find / -type f -name "ett.txt"|xargs cat通过管道|  逐行处理,接指令cat(查看内容)

  • oldboywindows
  • oldboywindows
  • oldboywindows

[root@ban ~]# find / -type f -name "ett.txt"|xargs ls  通过管道|  逐行处理,接指令ls(查看列表)

/etc/ett.txt  /opt/ett.txt  /root/ett.txt

自学linux指令分析-sed