博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第二十六课 sed工具
阅读量:6214 次
发布时间:2019-06-21

本文共 2876 字,大约阅读时间需要 9 分钟。

一、sed工具

  • 1、sed可以实现grep的功能,但是比较麻烦,没有颜色显示,它的强项就是查找替换;

    匹配:

    sed -n '/root/'p 1.txt 匹配出有root的行并显示出来
    sed -n '/r +t/'p 1.txt r后面有个脱义,-r就免脱义它等于 sed -nr '/r+t/p 1.txt
    sed -n '/^1/'p 1.txt 匹配出以1开头的行
    sed -n '/r..o/'p 1.txt 匹配出r跟o之间存在的两个任意字符的行

    [root@riven ~]# sed -n '/root/'p  1.txtroot:x:0:0:root:/root:/bin/bashoperator:x:11:0:operator:/root:/sbin/nologin[root@riven ~]# sed -n '/^1/'p 1.txt1sync:x:5:0:sync:/sbin:/bin/sync1shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown1halt:x:7:0:halt:/sbin:/sbin/halt111111111111111111[root@riven ~]# sed -n '/r..o/'p 1.txtoperator:x:11:0:operator:/root:/sbin/nologinpolkitd:x:999:997:User for polkitd:/:/sbin/nologin
  • 2、打印指定的行

    sed -n '2'p 1.txt 打印第二行

    sed -n '2,5'p 1.txt 打印2至5行
    sed -n '15,$'p 1.txt 打印2至最未行
    sed -n '1,$'p 1.txt 打印全部行

    [root@riven ~]# sed -n '1'p 1.txtroot:x:0:0:root:/root:/bin/bash[root@riven ~]# sed -n '2,5'p 1.txtbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologinadm:x:3:4:adm:/var/adm:/sbin/nologinlp:x:4:7:lp:/var/spool/lpd:/sbin/nologin[root@riven ~]# sed -n '25,$'p 1.txtriven:x:1000:1000::/home/riven:/bin/bashtest:x:1003:1001::/home/test:/bin/bashuser2:x:1004:1004::/home/user2:/bin/bashhttpd:x:1005:1012::/home/httpd:/bin/nologinapache:x:48:48:Apache:/usr/share/httpd:/sbin/nologinsaslauth:x:997:76:Saslauthd user:/run/saslauthd:/sbin/nologin[root@riven ~]# sed -n '1,$'p 1.txt
  • 3、多项匹配

    -e 我在同一个表达式里面,我不仅要匹配还要打印出来,就是做多个动作

sed -e '1'p -e '/root/'p -e '/oo/'p -e '/ro/'p -n 1.txt 同时执行匹配三个项

[root@riven ~]# sed -e '1'p -e '/root/'p -e '/oo/'p -e '/ro/'p -n 1.txtroot:x:0:0:root:/root:/bin/bashroot:x:0:0:root:/root:/bin/bashroot:x:0:0:root:/root:/bin/bashroot:x:0:0:root:/root:/bin/bashlp:x:4:7:lp:/var/spool/lpd:/sbin/nologinmail:x:8:12:mail:/var/spool/mail:/sbin/nologinoperator:x:11:0:operator:/root:/sbin/nologinoperator:x:11:0:operator:/root:/sbin/nologinoperator:x:11:0:operator:/root:/sbin/nologinpostfix:x:89:89::/var/spool/postfix:/sbin/nologinchrony:x:998:996::/var/lib/chrony:/sbin/nologin
  • 4、不分大小写匹配

    sed -n 'ro'Ip 1.txt

    第二十六课 sed工具

  • 5、删除

    sed '1,8'd 1.txt 除了前8行,把剩下的行列出来。不删除原文件;

第二十六课 sed工具

sed -i '1,10'd 1.txt 删除1-10行
第二十六课 sed工具

sed -i '/user/'d 1.txt 删除文件里面所有user字符

  • 6、替换

    sed '1,10s/root/toor/g' 1.txt :把1-10行的所有root替换成toor ,g:全局替换,如果不加g只替换该行出现的第一个

sed r '1,10s/ro+/rt/g' 1.txt

head 1.txt |sed -r 's/([^:]+):(.*):([^:]+)/\3:\2:\1/'

我们把前10行调换第一段跟最后一段替换位置,
s 替换命令,
([^:]+)非:的字符,如果sed用()一定要用-r选项
: 分隔符,(我们把这一段,中间一段,最后一段)
\1 代表第一个()
\2 代表第二个()
\3 代表第三个()
因为我们要把最后一段跟最前一段进行调换,那么我们就要进行调换。

head 1.txt |sed 's/\/root/123/g' 把/root/替换成123,如果有/,那么我们就得脱义。

head 1.txt |sed 's//sbin/nologin/123/g' 把/sbin/nologin 替换成123,因为里面存在多个/,那我们就得脱义,得写成:head 1.txt |sed 's/\/sbin\/nologin/g 或者写成 head 1.txt |sed 's@/sbin/nologin@g' 或者我们用#代替/

head 1.txt |sed 's/[a-zA-Z]//g' 删除文档里面所有字母。

head 1.txt |sed -r 's/(.*)/aaa:&/'
把所有行的前面加上一个字符串aaa, 使用小括号(),一定要加-r选项,小括号()里面的内容,我们可以用\1或者& 表示。

一定要多多练习grep ,sed ,awk ;多练才有效果!!!

转载于:https://blog.51cto.com/10690709/2108376

你可能感兴趣的文章
深度拷贝
查看>>
git笔记
查看>>
Android 跳转到各系统页面
查看>>
Android Studio 实用快捷键
查看>>
使用ajax用户名密码登录后转发至WEB-INF下的方法
查看>>
JVM类加载机制详解(一)JVM类加载过程
查看>>
解决 Hudson 控制台输出乱码
查看>>
linux的文件操作
查看>>
centos systemctl 配置详解
查看>>
Git中三种文件状态及其转换
查看>>
规格模式取代sql查询代码
查看>>
javascript引用动态变量名的变量值
查看>>
实现struts2零配置流程
查看>>
用maven+springMVC创建一个项目 【转】
查看>>
Wireshark过滤规则实践第一篇:显示过滤器
查看>>
U-boot在S3C2440上的移植详解(五)--- yaffs2文件系统下载
查看>>
android通过okhttp访问自签名https网站(单向)
查看>>
[leetcode] Valid Sudoku
查看>>
【Homebrew】Error: Failure while executing: git config --local --replace-all homebrew.private true
查看>>
lua面向对象编程
查看>>