在字符串处理中,最重要的就是查找和替换。
sed [选项] 处理脚本 输入文件...
-r是用于在sed命令中使用扩展正则表达式的选项。如果没有指定选项,sed命令会默认将基本正则表达式视为正则表达式。
-e选项用于为sed命令设置要执行的处理脚本。如果没有指定任何选项,sed命令会将第1个非选项的参数作为处理脚本来运行。例如指定多个处理脚本
$ sed -e 's/:/,/g' -e 's/bin//g' /etc/passwd root,x,0,0,root,/root,//bash ,x,1,1,,/,/s/nologin daemon,x,2,2,daemon,/s,/s/nologin adm,x,3,4,adm,/var/adm,/s/nologin lp,x,4,7,lp,/var/spool/lpd,/s/nologin sync,x,5,0,sync,/s,//sync ……以下省略……
-i选项的后面指定一个字符串参数,sed命令还会对编辑之前的原文件备份
例如将:(冒号)替换为_(下划线)
$ sed 's/:/_/g' /etc/passwd
在上面的示例中,处理脚本s/:/_/并没有使用地址。如果像这样省略了地址,则文件的全部内容都会成为处理对象。
例如第2-4行作为命令的处理对象
$ sed '2,4s/:/_/g' /etc/passwd
▼使用s命令将匹配到指定模式的内容删除
“替换后字符串”也可以是空字符串。这就相当于删除匹配到的部分,s命令末尾的标志是可以控制替换操作的符号,常用的主要是g和i。标志g表示对匹配到匹配模式的所有结果进行替换。i就代表匹配到的第一行。
如果不需要使用任何标志,则标志部分可以省略。此外,如果要同时使用多个标志,可以像ig或gi这样以任意的顺序指定多个标志。
使用/对/字符进行转义
$ sed 's//bin///usr/bin//g' /etc/passwd root:x:0:0:root:/root:/usr/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin ……
使用%作为分隔符
$ sed 's%/bin/%/usr/bin/%g' /etc/passwd root:x:0:0:root:/root:/usr/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin ……
审核编辑:汤梓红
全部0条评论
快来发表一下你的评论吧 !