- 简介
- 第一章 - 关于 CD
- 第二章 - 基本命令
- Hack-7 Grep
- Hack-8 Grep 与正则表达式
- Hack-9 Find 命令
- Hak-10 重定向
- Hack-11 Join 命令
- Hack-12 Tr 命令
- Hack-13 Xargs 命令
- Hack-14 Sort 命令
- Hack-15 Uniq 命令
- Hack-16 Cut 命令
- Hack-17 Stat 命令
- Hack-18 Diff 命令
- Hack-19 Ac 命令
- Hack-20 让命令在后台执行
- Hack-21 Sed 替换基础
- Hack-22 Awk 简介
- Hack-23 VIM 基本入门
- Hack-24 Chmod 命令
- Hack-25 Tail -f -f
- Hack-26 Less 命令
- Hack-27 Wget 下载器
- 第三章 - SSH 技巧
- 第四章 - 日期设置
- 第五章 - PS* 介绍
- 第六章 - 压缩和打包
- 第七章 - 历史命令
- 第八章 - 系统任务管理
- 第九章 - 安装软件
- 第十章 - LAMP 套装
- 第十一章 - Bash 脚本
- 第十二章 - 系统性能监控
- 第十三章 - 额外的技巧
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
Hack-21 Sed 替换基础
Sed 替换基础
这里介绍了 sed
的替换技巧
首先看一下用法:
sed 's/REGEXP/REPLACEMENT/FLAGS' filename
其中:
- s 表示执行替换操作
- 常用的还有 d 表示删除
- / 表示分隔符
- 分隔符还可以用 @ 或者 % 或者 ; 或者 : 表示
- REGEXP 表示匹配的正则
- REPLACEMENT 表示要替换的内容
- FLAGS 表示标志
- g 全局替换,从头到尾都换
- n 可以是任意数字,表示的是替换第 n 次出现的地方
- p 打印两次匹配到的内容,即,如果替换成功则打印两遍
- i 忽略大小写的匹配
- w 后面跟个文件,如果产生了替换,则将替换后的结果输出到文件中
然后我们来看这样一个文件:
➤ cat sed.txt
# Instruction Guides
1. Linux Sysadmin, Linux Scripting etc.
2. Databases - Oracle, mySQL etc.
3. Security (Firewall, Network, Online Security etc)
4. Storage in Linux
5. Productivity (Too many technologies to explore, not
much time available)
#
Additional FAQS
6. Windows- Sysadmin, reboot etc.
1. 把第一个 'Linux' 替换成 'Linux-Unix'
➤ sed 's/Linux/Linux-Unix/' sed.txt
# Instruction Guides
1. Linux-Unix Sysadmin, Linux Scripting etc.
2. Databases - Oracle, mySQL etc.
3. Security (Firewall, Network, Online Security etc)
4. Storage in Linux-Unix
5. Productivity (Too many technologies to explore, not
much time available)
#
Additional FAQS
6. Windows- Sysadmin, reboot etc.
这个例子很简单,不多说了。
2. 把 'Linux' 全部替换成 'Linux-Unix'
➤ sed 's/Linux/Linux-Unix/g' sed.txt #注意,这里是全部替换哦,所以有个 g(global)
# Instruction Guides
1. Linux-Unix Sysadmin, Linux-Unix Scripting etc.
2. Databases - Oracle, mySQL etc.
3. Security (Firewall, Network, Online Security etc)
4. Storage in Linux-Unix
5. Productivity (Too many technologies to explore, not
much time available)
#
Additional FAQS
6. Windows- Sysadmin, reboot etc.
3.仅把第二个 'Linux' 换成 'Linux-Unix'
➤ sed 's/Linux/Linux-Unix/2' sed.txt
# Instruction Guides
1. Linux Sysadmin, Linux-Unix Scripting etc.
2. Databases - Oracle, mySQL etc.
3. Security (Firewall, Network, Online Security etc)
4. Storage in Linux
5. Productivity (Too many technologies to explore, not
much time available)
#
Additional FAQS
6. Windows- Sysadmin, reboot etc.
看到了吗,这里的标志位是 2
哦~
4. 全部替换+打印替换内容到屏幕+保存输出到文件
➤ sed -n 's/Linux/Linux-Unix/gpw output' sed.txt
1. Linux-Unix Sysadmin, Linux-Unix Scripting etc.
4. Storage in Linux-Unix
------
➤ cat output
1. Linux-Unix Sysadmin, Linux-Unix Scripting etc.
4. Storage in Linux-Unix
这次的例子有点奇怪,标志位是 gpw
我们已经知道 g
代表的是全部替换,那么 p
和 w
又是啥? 通过 info sed
我们可以查到:
`p' - If the substitution was made, then print the new pattern space.
`w FILE-NAME' - If the substitution was made, then write out the result to the named file.
现在你懂了嘛? 不懂? 查词典去!
5.仅仅替换特殊的行
➤ sed '/\-/s/\-.*//g' sed.txt
# Instruction Guides
1. Linux Sysadmin, Linux Scripting etc.
2. Databases
3. Security (Firewall, Network, Online Security etc)
4. Storage in Linux
5. Productivity (Too many technologies to explore, not
much time available)
#
Additional FAQS
6. Windows
看到这个命令与其他的不同了吗?
没错,就是在 s
前面加了点东西,加的东西就是我们要匹配的行,这次加的是 \-
, 所以就替换了 -
后面的内容. 举一反三,你是不是可以想出别的方案呢? 试试看!
6.删除某些字符
➤ sed 's/\(.....\)\(...\)$/\2/g' sed.txt
# Instructiodes
1. Linux Sysadmin, Linux Scripttc.
2. Databases - Oracle, mytc.
3. Security (Firewall, Network, Online Securtc)
4. Storage nux
5. Productivity (Too many technologies to explnot
much time avle)
#
AdditioAQS
6. Windows- Sysadmin, rebtc.
看懂了吗? 没有? 好,那看下一个:
➤ sed 's/...$//g' sed.txt
# Instruction Gui
1. Linux Sysadmin, Linux Scripting e
2. Databases - Oracle, mySQL e
3. Security (Firewall, Network, Online Security e
4. Storage in Li
5. Productivity (Too many technologies to explore,
much time availab
#
Additional F
6. Windows- Sysadmin, reboot e
这个应该看懂了吧?
上一个例子是删除了最后三个字符,上上一个例子是删除了倒数第八到第五个字符,也就是,把最后八个字符换成了最后三个字符,有点绕? 多想一会儿!
再来一个删除 html 标签的:
➤ echo "This <b> is </b> an <i>example</i>." | sed -e 's/<[^>]*>//g'
This is an example.
最后一个例子:
➤ sed 's/#.*//g' sed.txt
1. Linux Sysadmin, Linux Scripting etc.
2. Databases - Oracle, mySQL etc.
3. Security (Firewall, Network, Online Security etc)
4. Storage in Linux
5. Productivity (Too many technologies to explore, not
much time available)
Additional FAQS
6. Windows- Sysadmin, reboot etc.
替换显得太难看了,不如直接删除:
➤ sed '/#.*/d' sed.txt
1. Linux Sysadmin, Linux Scripting etc.
2. Databases - Oracle, mySQL etc.
3. Security (Firewall, Network, Online Security etc)
4. Storage in Linux
5. Productivity (Too many technologies to explore, not
much time available)
Additional FAQS
6. Windows- Sysadmin, reboot etc.
sed
是个好东西,光 info sed
就有 98K 这么大,好好看看咯~ (我没看完...逃...
扩展阅读
本书简介:
- Linux 进阶技巧
- 巧妙的命令组合
- Bash 某些技巧
- 一共一百零一个(包括充数的)
- 最后有个奖励章(额外技巧)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论