11. Sed 例子

12 篇文章 0 订阅
  1. 去除代码中的注释
dingmac@ubuntu:~$ echo -e "One\nTwo One\n#One\n//zhang" | sed -E 's@(//.*|#.*)@ ---- @' 
  1. 打印出行数 类似wc -l
 seq 129 | sed -n '$='
  1. 答应出前几行 head 10
seq 120 | sed '10 q'
  1. 打印出最后一行
seq 102 | sed -n '$p'
  1. 打印出最后5行
seq 102 | sed ':A;N;1,5bA;D'
  1. 打印出最后两行
seq 102 | sed 'N;$!D'
  1. 复制功能
seq 102 | sed 'w file1.txt'
  1. 实现grep -v
grep -v "Line #1" test.txt

sed -n '/Line #1/!p' test.txt
  1. tr 功能
echo "ABC" | tr "ABC" "abc" 
输出abc

dingmac@ubuntu:~$ echo "abcazhangsan" | sed 'y/abc/ABC/'
ABCAzhAngsAn
dingmac@ubuntu:~$ echo "abcazhangsan" | tr "abc" "ABC"
ABCAzhAngsAn
  1. 实现cat -s 的功能去掉重复的 换行符
echo "zhansgan\n\n\tlisi\n" | cat -s

dingmac@ubuntu:~$ echo  -e "zhansgan\n\n\n\tlisi\n" | sed -n '1s/^$//p;/./,/^$/! D;p'

MAC 注意点

不支持 e

echo 'a' | sed 'e date' 没有作用

{}
执行多个语句的时候{N;p;} 记得一定要写最后的;

查看下面例子

echo -e "zhansgan\n\nlisi" | sed '/./,/m/!D'

如果区间/./ 到 /m/ 开始区间找到了 结束的没有找到 name 一直到最后

echo -e “zhansgan\n\nlisi\n” | sed -n ‘N;$!D;p;’

解释如下
1
2
3
4

1 进入 2 进入 不是最后一行 删除第一行 pattern buffer 变成 2 然后 第三行进来 不是最后一行 删除第一行 pattern buffer 变成 3 最后到了第四行 进来 变成3\n4 没有删除 最后打印出来 2\3

最后建议 man sed 一下 查看一下文档

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值