标签搜索

sed命令高级技巧

mrui
2024-03-09 / 0 评论 / 49 阅读 / 正在检测是否收录...

写入多条命令

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
0

评论

博主关闭了当前页面的评论