写入多条命令
sed -i '/UseDNS/{
s/yes/no/
s/#//
}' /etc/ssh/sshd_config
#效果:将#UseDNS yes 该为:UseDNS no
#注:此条命令是关闭ssh的DNS反查,可以加快ssh连接速度。
#或者使用-e参数
sed -ie '
/Use/s/#//
s/yes/no/
' /etc/ssh/sshd_config
ls -l | awk '{print"\"" $9" " $10" "$(11)"\""}'| sed -e 's/NSD ADMIN // ' -e 's/[A-Z]/\l&/g';
关于最后一条命令的解释:
-e选项: 在单次运行中执行多个编辑命令。它的作用是 将后续的字符串参数视为独立的 sed 脚本命令,并按顺序依次应用这些命令到输入文本中。
s/[A-Z]/1&/g:将所有的大写字母转换为小写
删除第一个匹配到的行
sed -i '0,/pattern/{/pattern/d;}' filename
说明:
- 0,/pattern/:
- 表示从文件开始到第一个匹配 pattern 的行。
/pattern/ 是匹配条件。 {/pattern/d;}:
{} 是一个命令块,对匹配到的行执行其中的命令。
/pattern/d 表示删除匹配到的行。示例
假设有如下文件test.txt line 1 pattern line 2 pattern line 3 只想删除第一个匹配到 pattern 的行,可以使用: sed '0,/pattern/{/pattern/d;}' test.txt 执行后,文件内容变为: line 1 line 2 pattern line 3
评论