[shell]sed语法
来源:互联网 发布:java里解压缩gzip文件 编辑:程序博客网 时间:2024/06/05 03:17
一. Sed语法:
sed 'command' filenames
二. sed简介
Sed是非交互式的行编辑器. 它即可以从stdin中接收文本输入, 也可以从文件中接收文本输入, 它对输入中的指定行进行特定的操作, 一行操作一次, 然后将结果输出到stdout,
或输出到文件中. 在shell脚本中使用的话, sed通常都是作为管道工具链中的一个处理部分来使用.
Sed会决定它需要处理那些行, 因为sed的参数就包含有地址范围. [1] 既可以通过行号来指定地址范围, 也可以通过模式匹配来决定地址范围.
比如, 3d表示sed会删除输入的第3行, /windows/d表示sed会删除掉所有匹配"windows"的输入行.
三. 基本sed操作
操作符
名字
效果
[地址范围]/p
打印
打印[指定的地址范围]
[地址范围]/d
删除
删除[指定的地址范围]
s/pattern1/pattern2/
替换
将指定行中, 将第一个匹配到的pattern1, 替换为pattern2.
[地址范围]/s/pattern1/pattern2/
替换
在地址范围指定的每一行中, 将第一个匹配到的pattern1, 替换为pattern2.
[地址范围]/y/pattern1/pattern2/
transform
在地址范围指定的每一行中, 将pattern1中的每个匹配到pattern2的字符都使用pattern2的相应字符作替换. (等价于tr命令)
g
全局
在每个匹配的输入行中, 将每个模式匹配都作相应的操作. (译者注: 不只局限于第一个匹配)
-e
允许多项编辑
-f
指定sed脚本文件名
-n
取消缺省输出
除非在替换命令的后边明确指定选项g(全局), 否则的话, 替换操作只会替换掉每行上的第一个模式匹配实例.
如果在命令行或脚本中使用这个命令, sed操作可能还需要某些选项和引用.
四. 示例
$cat file1 #file1内容
northwest NW Charles Main 3.0 .98 3 24
western WE Sharon Gray 5.3 .97 5 23
Southwest SW Lewis Dalsass 2.7 .8 2 18
Southern SO Suan Chin 5.1 .95 4 15
Southeast SE Patricia Hemenway 4.0.7 4 17
eastern EA TB Savage 4.4 .84 5 20
northeast NE AM Main Jr. 5.1 .94 3 13
north NO Margot Weber 4.5 .89 5 9
central CT Ann Stephens 5.7 .94 5 13
例1:
1. sed '1,3d' file1 #删除文件file1的1至3行
2. sed -n '/Tom/p' file1 #打印文件file1中包含Tom的行
3. sed -n '/Tom/! p' file1 #打印文件file1中不包含Tom的行
4. sed '3,$d' file1 #删除文件file1从第3行至最后一行的内容
5. sed '/Tom/d' file1 #删除文件file1中包含Tom的行
6. sed 's/Tom/Jack/g' file1 #将文件file1各行内所有的Tom都替换为Jack
7. sed -n 's/^Tom/Jack/p' file1 #将文件file1行首的Tom替换为Jack并只打印发生替换的行
8. sed -n 's/\(Mar\)got/\1ianne/p' file1 #将文件file1中的Margot替换为Marianne,并只显示发性替换的行
9. sed -n '/west/,/east/' file1 #将文件file1在west和east中的所有行打印出来
10. sed -e '1,3d' -e 's/Hemenway/Jones/' file1 #对file1先编辑,再替换
11. sed '/Susan/r file2' file1 #在文件file1中所有包含Suan的行后读入文件file2的内容
12. sed -n '/north/w file3' file1 #将file1中包含north的行写入file3
13. sed '/^north /a --->new appended line<---' file1 #将file1中以north开头的行后添加一行内容
14. sed '/eastern/i --->new insert line<---' file1 #将file1中包含eastern的行前插入一行内容
例2. sed脚本
$cat sed_sh1
s/TB \(Savage\)/Thomas \1/
$sed -f sed_sh1 file1
- [shell]sed语法
- Shell中的Sed的常用命令语法
- shell awk sed tr grep 语法汇总
- shell awk sed tr grep 语法汇总
- Shell中的grep、awk和sed的常用命令和语法
- Shell中的grep、awk和sed的常用命令和语法
- Shell中的grep、awk和sed的常用命令和语法
- Shell 中grep awk 和 sed常用命令和语法
- Shell中的grep、awk和sed的常用命令和语法
- Shell中的grep、awk和sed的常用命令和语法
- Shell中的grep、awk和sed的常用命令和语法
- Shell中的grep、awk和sed的常用命令和语法
- Linux下shell编程常用grep\awk\sed语法
- Shell中的grep、awk和sed的常用命令和语法
- sed语法
- sed语法
- SHELL [sed]
- shell sed
- Android PopupWindow介绍及实现菜单效果
- 作为“创业导师”的天使投资人
- 为什么我现在加人和评论的权限都没有了呀。
- [转].net内存回收与Dispose﹐Close﹐Finalize方法
- monkeyrunner 录制脚本
- [shell]sed语法
- 线段树_POJ2528_解题报告
- 解析器的介绍
- android程序安装后图标不显示
- 十大免费防火墙大盘点
- [转]常见.Net 英文专业词汇
- Hibernate框架中如何将多对多映射转化为多对一映射
- 停下来是为了更好地出发
- 判断任一二叉树,是否为满二叉树.(输出二叉树,节点总数,二叉树深度)