shell三剑客之--sed

非交互式编辑器,一次处理一行内容。(流文本编辑器)

参数

① -f 指定一个规则文件 需求复杂的时候,需要匹配的内容多

② -n 阻止输入行输出

③ -r 扩展正则,将匹配不到的现在可以匹配到了

④ -i 修改后的数据会替换原文件

模式

①s 替换

② g 整行(也可以是数字,替换第几个)

③ d 删除

④ p 打印

⑤ a 追加

⑥ i 插入

1、替换

cp /etc/passwd /opt

用ROOT替换root:  #前面两个斜杠中是要匹配的内容,可以使用正则,后面两个斜杠中间,是要替换的内容,是纯文本

sed 's/root/ROOT/' /opt/passwd

sed 's/root/ROOT/ ; s/mail/MAIL/' /opt/passwd

使用脚本文件:

vim state

脚本:

s/root/Root/
s/lp/LP/
s/mail/Mail/

使用脚本文件:

sed -f state /opt/passwd

保存输出:

sed -f state /opt/passwd > newfile

阻止输入行自动显示:

sed -n 's/root/ROOT/p' /opt/passwd

2、删除

rm -rf /opt/*
cp /etc/passwd /opt

删除文件第一行

sed '1d' /opt/passwd

删除文件的第1到2行

sed '1,2d' /opt/passwd

删除第2行到最后一行

sed '2,$d' /opt/passwd

匹配到root,删除此行

sed '/root/d' /opt/passwd

匹配root行,到某一行

sed '/root/,2d' /opt/passwd

删除奇数行

sed '1~2d' /opt/passwd

删除偶数行

sed '0~2d' /opt/passwd

sed可以利用指令来删除文件中的空行

sed '/^$/d' /opt/passwd

删除sshd配置文件的注释和空行

sed '/^#.*/d;/^$/d' /opt/passwd

3、替换

rm -rf /opt/*
cp /etc/passwd /opt

选项 -i 会使得sed用修改后的数据替换原文件

sed -i 's/bin/BIN/' /opt/passwd

g标记可以使sed执行全局替换

sed 's/root/admin/g' /opt/passwd

忽略大小写替换

sed 's/Root/admin/gi' /opt/passwd

g标记可以使sed匹配第N次以后的字符被替换

echo "thisthisthisthis" | sed 's/this/THIS/2g'

sed中的分隔符可以替换成别的字符, 因为s标识会认为后面的字符为分隔符

sed 's:adm:text:' /opt/passwd

sed 's|adm|text|' /opt/passwd

 由于在使用 -i 参数时比较危险, 所以我们在使用i参数时在后面加上.bak就会产生一个备份的文件

sed -i.bak 's/root/admin/' /opt/passwd

sed如果在脚本中使用的话, 不可避免的要调用变量, 所以以下这种方式可以用来调用变量,即' '换成了" "

text=hello
echo "hello world" | sed "s/$text/HELLO/"

将等号左右两边的内容调换

sed  "s/\(.*\) = \(.*\)/\2 = \1/" /opt/passwd

4、追加和插入

rm -rf /opt/*
cp /etc/passwd /opt

在匹配到开头为bin的行下一行插入内容

sed '/^bin/a\hello nihao/' /opt/passwd

在匹配到开头为bin的行上一行插入内容

sed '/^bin/i\hello nihao/' /opt/passwd

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值