首页 > 学院 > 操作系统 > 正文

sed语法格式

2024-06-28 16:04:33
字体:
来源:转载
供稿:网友
sed语法格式1. sed ‘{定位}指令'  文件2.命令 | sed '指令'#sed 'p' 文件    #显示文件的内容#sed -n 'p' 文件如何定位(man sed)1.行号#sed -n '1p' 文件#sed -n '3p' 文件#sed -n '1~2p' 文件#sed -n '1,2p' 文件2.正则#sed -n '/ipADDR/p' 文件#sed -n '/cIPADDRc' 文件#sed '///bin//bash/p'  文件#sed '/c/bin/bashcp'  文件#sed '/#/bin/bash#p'  文件

#sed '$p' 文件

注意:sed -ni  会把文件删空变成空文件

send  -in  不会

SED的操作指令:1.增加#sed  '2a XXX'  文件  #追加append#sed  '2i YYY'  文件  #插入insert2.删除#sed  '2d'  文件      #删除第2行#sed  '/IPADDR/d'  文件3.修改#sed  '2c XXX' 文件   #change行#sed  's/旧/新/' 文件  #替换,替换1个#sed  's/旧/新/g' 文件  #替换所有脚本自动安装软件,修改配置,启动服务#vim test.sh#!/bin/bashyum -y install vsftpdsed -i '$a chroot_local_user=YES' /etc/vsftpd/vsftpd.confservice vsftpd start chkconfig vsftpd onsed 's/旧/新/'  文件sed 's#  #  #'  文件sed 's,  ,  ,'  文件sed的n指令{next}读取下一行sed的s替换特殊用法#sed 's/abc/&d/'  文件把abc替换为abcd#sed 's/doc/&s/'  文件把doc替换为docs#sed 's/hmtl/<&>/'  文件#sed '/关键词/s/旧/新/'  文件

#sed '/关键词/s#旧#新#'  文件

开头第一个和最后一个替换sed  -r 's#^(.)(.*)(.)$#/3/2/1#' a.txt正则:正则的保留abctabcuabciabcoabcabctcbauabcicbaocba1.基本正则/(abc/)t/1u/1i/1o/1/(abc/)t/(cba/)u/1i/2o/22.扩展正则(abc)t/1u/1i/1o/1(abc)t(cba)u/1i/2o/2[root@stu ~]# cat a.txt 192.168.0.1192.168.0.2192.168.0.8[root@stu ~]# sed -r 's/192.168.0.([0-9])/172.16.0./1/' a.txt172.16.0.1172.16.0.2172.16.0.8#sed -r '/IPADDR/s#([0-9]{1,3}.){3}([0-9]{1,3})#176.137.4./2#'  /etc/sysconfig/network-scripts/ifcfg-eth0# sed -r '/IPADDR/s#[0-9].*.([0-9]{1,3})#176.137.4./1#'  /etc/sysconfig/network-scripts/ifcfg-eth0删除每行的第2个和最后一个字符hello the Wordni hao beijinghello#sed -r 's/^(.).(.*).$ //1/2/' txt将每行的第1个和最后一个字符互换位置#sed 's/^(.)(.*)(.)$//3/2/1/'  txtsed其他功能:r读入其他文件w另存为#sed '3r b.txt'     a.txt#sed '1,3w cc.txt'  a.txt##################################################[root@svr5 data]# cat /etc/passwd | wc -l35[root@svr5 data]# sed -n '$=' /etc/passwd35##################################################hello the wordni hao beijinghello将第一行,复制到第2行后面#sed '1h;2G' a.txt将第一行,剪切并替换最后一行#sed '1h;1d;$g' a.txth   将数据复制到粘贴板[覆盖]H   将数据赋值到粘贴板[追加]g   将粘贴板的数据粘贴回来[覆盖]G   将粘贴板的数据粘贴回来[追加]综合案例:过滤用户名称以及对应的密码#!/bin/bashrm -rf user.tmpline=`sed -n '/bash$/p' /etc/passwd`for i in $linedo   echo ${i%%:*} >>user.tmpdonefor j in `cat user.tmp`dopass1=`grep $j /etc/shadow`pass2=`echo ${pass1#*:}`pass=`echo ${pass2%%:*}`echo "$j---->$pass"done++++++++++++++++++++++++++++++++++++++版本二#!/bin/bash#user=`grep "/bin/bash" /etc/passwd |cut -d: -f1`user=`sed -n '/bash$/s/:.*//p' /etc/passwd`for i in $userdopass=$(grep $i /etc/shadow |sed 's/.*:$6/$//;s/:.*//')echo "$i 密码是:$pass"done
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表