IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

sed命令使用

Zhang Jiuan' Notes 2010-01-25 13:25:01 累计浏览 4,395 次
本机暂存

今天对sed小命令的几个选项总结一下,以备忘。
比如有这样一个源文件:
//school
tsinghua BJ
tongji SH
shanda SD
nanda JS
xidian XA
需求1:希望把BJ替换成Beijing, SH=>Shanghai, SD=>Shandong, JS=>Jiangshu, XA=>Xi’an
于是想到了sed命令可以完成替换功能。
sed ’s/BJ/Beijing/; s/SH/Shanghai/; s/SD/Shandong/; s/JS/Jiangshu/;s/XA/Xian/’ school
//output
tsinghua Beijing
tongji Shanghai
shanda Shandong
nanda Jiangshu
xidian Xian
效果还不错,记得sed还有一个-e选项,试一下这个吧:
sed -e ’s/BJ/Beijing/’ -e ’s/SH/Shanghai/’ -e ’s/SD/Shandong/’ -e ’s/JS/Jiangshu/’ -e’ s/XA/Xian/’ school
效果依旧:)
方法三:我们输入的时候分成多行
sed ‘
s/BJ/Beijing/
s/SH/Shanghai/
s/SD/Shandong/
s/JS/Jiangshu/
s/XA/Xian/
‘ school
效果同样不错。
方法四:存一个sed文件
//test.sed
s/BJ/Beijing/
s/SH/Shanghai/
s/SD/Shandong/
s/JS/Jiangshu/
s/XA/Xian/
sed -f test.sed school
效果还是挺令人满意的。
需求二:我们只把BJ替换成Beijing其它的不替换,也不显示。
这时候-n便派上用场了。
sed -n ’s/BJ/Beijing/p’ school
输出如下:
tsinghua Beijing
怎么样,不错吧。

现在想想,XA似乎没有替换成Xi’an,没有单引号,怎么办?

对了,sed输入实际可以使用双引号的,试一下吧

sed -e ’s/BJ/Beijing/’ -e ’s/SH/Shanghai/’ -e ’s/SD/Shandong/’ -e ’s/JS/Jiangshu/’ -e “s/XA/Xi\’an/” school

结果正确了~~~~~~

总结一下:

1 sed的-f为指定执行文件

2 sed的-n选项,过滤不匹配的输出

3 sed的-e指定后面跟的是命令

4 sed的输入可以是”",这样可以过滤一些特殊字符

同分类推荐文章

  1. 从零重建 macOS 开发机:可复现的环境初始化流程 (2026-06-14 20:36:00)
  2. 百度物理网络监控工具开源第二弹:毫秒级监控工具 baize,让你的网络问题无处遁形 (2026-06-11 08:10:28)
  3. How to Set Up Homebrew Tap for Private CLI Tools: A Complete Guide (2026-05-27 02:13:03)

查看更多 DevOps 文章 →

建议继续学习

  1. 28个Unix/Linux的命令行神器 (累计阅读 16,789)
  2. 利用find和sed批量替换文件内容 (累计阅读 11,456)
  3. perl更新/修改/删除文本文件内容 (累计阅读 10,646)
  4. AWK 简明教程 (累计阅读 9,364)
  5. Linux shell脚本使用while循环执行ssh的注意事项 (累计阅读 8,183)
  6. AWK介绍 (累计阅读 6,707)
  7. awk 实例之二维数组 (累计阅读 6,010)
  8. Bash如何取得当前正在执行的脚本的绝对路径? (累计阅读 5,998)
  9. Perl命令行常见用法及技巧 (累计阅读 5,912)
  10. 较安全的rm脚本 (累计阅读 5,917)