11. Sed 例子

  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 一下 查看一下文档

猜你喜欢

转载自blog.csdn.net/successdd/article/details/79078324
sed