html5做网站的代码,共同建设网站心得,广东省建设信息网三类人员,中国十大发布信息网站排名1、sed的定义
sed是一种流编辑器#xff0c;按行处理#xff0c;一次处理一行内容
处理方式#xff1a;如果只是展示#xff0c;会放在缓冲区#xff08;模式空间#xff09;#xff0c;展示结束后#xff0c;会从模式空间把操作结果删除
一行一行处理#xff0c;处…1、sed的定义
sed是一种流编辑器按行处理一次处理一行内容
处理方式如果只是展示会放在缓冲区模式空间展示结束后会从模式空间把操作结果删除
一行一行处理处理完当前行才会处理下一行直到文件末尾。
作用对文本的内容进行增删改查最好用的是改和增
2、sed的命令格式和操作选项 sed -e ‘操作符’ -e 操作符 文件1 文件2 -e表示可以跟多个操作符只有一个操作-e可以省略 sed -e 操作符1;操作符2 文件 文件2 2.1选项 -e用于执行多个操作命令 -f在脚本中定义好了操作符然后根据脚本内容的操作符对文件进行操作 -i直接修改目标文件慎用 -n仅显示script处理后的结果不加-nsed会有两个输出结果加了-n就会把默认输出屏蔽只显示一个结果 2.2操作符 p打印结果 r使用扩展正则表达式 s替换替换字符串 c替换替换行 y替换替换单个字符多个字符替换必须和替换内容的字符长度保持一致 d删除删除行 a增加在指定行的下一行插入内容 i增加在指定行的上一行插入内容 r在行后增加文本内容将读取的文件内容添加到对象文件中 $a在最后一行插入新的内容 $i在倒数第二行插入新的内容 $r读取其他文件的内容然后插入到对象文件的最后一行 3、sed的打印功能
3.1寻址打印
sed -n 只显示行号 [roottest1 opt]# sed -n test1.txt 1 2 3 4 sed -n ;p 既显示行号又显示内容 [roottest1 opt]# sed -n ;p test1.txt 1 aaa 2 bbb 3 ccc 4 ddd 5 eee 6 fff 7 ggg 8 hhh 9 iii 打印指定的行sed -n 4p [roottest1 opt]# sed -n 4p test1.txt ddd 打印最后一行sed -n $p [roottest1 opt]# sed -n $p test1.txt iii 3.2行号范围打印
打印2-4行sed -n ‘2,4p’ [roottest1 opt]# sed -n 2,4p test1.txt bbb ccc ddd 打印2-最后一行sed-n ‘2,$p’ [roottest1 opt]# sed -n 2,$p test1.txt bbb ccc ddd eee fff ggg hhh iii 打印第2行和最后一行sed-n ‘2p;$p’ [roottest1 opt]# sed -n 2p;$p test1.txt bbb iii 3.3打印奇数行和偶数行
奇数行sed-n ‘p;n’
n的作用跳过一行打印下一行 [roottest1 opt]# sed -n p;n test1.txt aaa ccc eee ggg iii 偶数行sed-n ‘n;p’ [roottest1 opt]# sed -n n;p test1.txt bbb ddd fff hhh 4、对文本内容进行过滤
sed -n /a/p 过滤并打印包含a的行 [roottest1 opt]# sed -n /a/p test1.txt aaa cacc eeae fffa 使用正则表达式对文本内容进行过滤
sed -n /^root/p /etc/passwd 打印以root为开头的行 [roottest1 opt]# sed -n /^root/p /etc/passwd root:x:0:0:root:/root:/bin/bash sed -n 33,/bash$/p从指定行开始打印到第一个以bash为结尾的行 [roottest1 opt]# sed -n 33,/bash$/p /etc/passwd geoclue:x:992:986:User for geoclue:/var/lib/geoclue:/sbin/nologin ntp:x:38:38::/etc/ntp:/sbin/nologin sssd:x:991:985:User for sssd:/:/sbin/nologin …… 打印至少有两个99:的行 [roottest1 opt]# sed -rn /(99:){2,}/p /etc/passwd nobody:x:99:99:Nobody:/:/sbin/nologin 要么以root为开头要么以bash为结尾的行 [roottest1 opt]# sed -rn /^root|bash$/p /etc/passwd root:x:0:0:root:/root:/bin/bash test1:x:1000:1000:test1:/home/test1:/bin/bash dn:x:1001:1001::/home/dn:/bin/bash test2:x:1011:1011::/home/test2:/bin/bash 面试题如何免交互删除文本内容不删除文件
sed -i ‘d’ 文件名
cat /dev/null 文件名
5、sed的删除操作
sed -n 3d;p 删除第三行打印剩余的行 [roottest1 opt]# sed -n 3d;p test1.txt 111 222 444 555 666 777 888 999 000 sed -n 5,$d;p 删除第五行到最后一行打印剩余的行 [roottest1 opt]# sed -n 5,$d;p test1.txt 111 222 333 444 sed -n 1!d;p 除了第一行其他的都删除 [roottest1 opt]# sed -n 1!d;p test1.txt 111 sed -n ‘4,6!d;p’ 除了第四行到第六行其他的都删除 [roottest1 opt]# sed -n 4,6!d;p test1.txt 444 555 666 sed -n 4d;6d;p 除了第四行和第六行其他的都打印 [roottest1 opt]# sed -n 4d;6d;p test1.txt 111 222 333 555 777 888 999 000 sed -i -e 1,3d 除了第四行和第六行其他的都删除 [roottest1 opt]# sed -i -e 1,3d -e 5d -e 7,$d test1.txt [roottest1 opt]# cat test1.txt 444 666 6、匹配字符串进行删除行
sed /a/d 删除所有包含a的行 [roottest1 opt]# sed /a/d test1.txt bhdbh nj hx sjdh wud ndhcbdh dd 面试题如何免交互删除空行 sed /^$/d 文件名 cat 文件名 | tr -s \n grep -v ^$ 文件名 7、s替换字符串
sed -n s/root/test/p 把root替换成test只替换第一个root [roottest1 opt]# sed -n s/root/test/p /etc/passwd test:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/test:/sbin/nologin sed -n s/root/test/gp 把所有的root都替换成test [roottest1 opt]# sed -n s/root/test/gp /etc/passwd test:x:0:0:test:/test:/bin/bash operator:x:11:0:operator:/test:/sbin/nologin sed -n s/^/#/p 每一行都加#注释掉 [roottest1 opt]# sed -n s/^/#/p test1.txt #111 #222 #333 #444 #555 #666 #777 #888 #999 #000 注释第四行到第六行 [roottest1 opt]# sed -n 4,6 s/^/#/p test1.txt #444 #555 #666 注释第四行和第六行 [roottest1 opt]# sed -n 4,6 s/^/#/p test1.txt #444 #555 #666 8、对字母进行大小写替换
8.1小写替换成大写
sed s/[a-z]/\u/ 文件名 首字母变成大写
u转换首字母大写的特殊符号\转义符 [roottest1 opt]# sed s/[a-z]/\u/ test1.txt Aaa Bbb Ccc Ddd sed s/[a-z]/\u/g 文件名 把所有的小写都变成大写 [roottest1 opt]# sed s/[A-Z]/\l/ test1.txt aAA bBB cCC dDD 8.2大写替换成小写
sed s/[A-Z]/\l/ 文件名 首字母变成小写 [roottest1 opt]# sed s/[A-Z]/\l/ test1.txt aAA bBB cCC dDD sed s/[A-Z]/\l/g 文件名 把所有的小写都变成小写 [roottest1 opt]# sed s/[A-Z]/\l/g test1.txt aaa bbb ccc ddd 9、整行替换
sed /原内容/c 替换内容 文件名
面试题替换ip地址
原ip地址IPADDR192.168.230.10
替换之后的ip地址IPADDR192.168.230.100 [roottest1 opt]# sed /IPADDR192.168.230.10/c IPADDR192.168.230.100 /etc/sysconfig/network-scripts/ifcfg-ens33 TYPEEthernet DEVICEens33 ONBOOTyes BOOTPROTOstatic IPADDR192.168.230.100 NETMASK255.255.255.0 GATEWY192.168.230.2 DNS1218.2.135.1 10、y单字符替换
把one替换成123替换的字符串长度要相同 [roottest1 opt]# sed y/one/123/ test1.txt 123 tw1 thr33 f1ur fiv3 six s3v32 3ight 2i23 t32 11、使用sed对字符串和字符的位置进行互换
字符串互换位置 [roottest1 opt]# echo abc | sed -r s/(a)(b)(c)/\3\1\2/ cab 单个字符互换位置 [roottest1 opt]# echo 早上好 | sed -r s/(.)(.)(.)/\3\2\1/ 好上早 面试题1提取出文本的型号
ant-1.9.7.jar
ant-launcher-1.9.7.jar
antlr-2.7.7.jar
antlr-runtime-3.4.jar
aopalliance-1.0.jar
archaius-core-0.7.6.jar
asm-5.0.4.jar
aspectjweaver-1.9.5.jar
bcpkix-jdk15on-1.64.jar
bcprov-jdk15-1.46.jar
bcprov-jdk15on-1.64.jar
checker-compat-qual-2.5.5.jar
方法1 [roottest1 opt]# cat lianxi.txt | grep -E [0-9]\. ant-1.9.7.jar ant-launcher-1.9.7.jar antlr-2.7.7.jar antlr-runtime-3.4.jar aopalliance-1.0.jar archaius-core-0.7.6.jar asm-5.0.4.jar aspectjweaver-1.9.5.jar bcpkix-jdk15on-1.64.jar bcprov-jdk15-1.46.jar bcprov-jdk15on-1.64.jar checker-compat-qual-2.5.5.jar 方法2 [roottest1 opt]# cat lianxi.txt | sed -r s/(.*)-(.*)(\.jar)/\2/ 1.9.7 1.9.7 2.7.7 3.4 1.0 0.7.6 5.0.4 1.9.5 1.64 1.46 1.64 2.5.5 面试题2
打印指定时间内的日志 [roottest1 opt]# sed -n /Jun 17 10:50:01/,/Jun 17 11:40:01/p /var/log/messages Jun 17 10:50:01 test1 systemd: Started Session 74 of user root. Jun 17 11:00:01 test1 systemd: Started Session 75 of user root. Jun 17 11:01:01 test1 systemd: Started Session 76 of user root. Jun 17 11:10:01 test1 systemd: Started Session 77 of user root. Jun 17 11:13:26 test1 chronyd[8756]: Selected source 185.209.85.222 Jun 17 11:20:01 test1 systemd: Started Session 78 of user root. Jun 17 11:22:01 test1 systemd: Removed slice User Slice of root. Jun 17 11:30:01 test1 systemd: Created slice User Slice of root. Jun 17 11:30:01 test1 systemd: Started Session 79 of user root. Jun 17 11:30:01 test1 systemd: Removed slice User Slice of root. Jun 17 11:40:01 test1 systemd: Created slice User Slice of root. Jun 17 11:40:01 test1 systemd: Started Session 80 of user root. Jun 17 11:40:01 test1 systemd: Removed slice User Slice of root.