列表:
Linux笔记——vim常用操作及扩展补充[手册]
Linux笔记——linux常用命令集合
Linux笔记——命令:awk
Linux笔记——命令:sed
Linux笔记——命令:grep
Linux笔记——命令:find
Linux笔记——命令:Sort,uniq,join,cut,paste,split
Linux笔记——shell基础:变量&本地变量&位置变量&特定变量参数
Linux笔记——条件测试test
Linux笔记——控制流
Linux笔记——shell补充:参数传递&函数等
Linux笔记——正则表达式入门及应用
Linux笔记——linux进程
Linux笔记——SVN命令总结
rpm&yum包管理命令总结
鉴于博客,表格&排版&颜色标记等等无法显示,大家可以下载这个笔记的资源
12个文档,不需要积分,以目录+表格+颜色标记形式
下载资源地址http://download.csdn.net/detail/wklken/3815477
The end! Thx! wklken的笔记
-----------------------------------------------
命令:sed
sed
|
sed的名字来源于其功能,它是一个“非交互式的”字符流编辑器(stream editor)。输入流通过程序并将输出直接送到标准输出端。
sed一次处理一行或多行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行或多行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向或写入命令存储输出。
sed主要用来自动编辑一个或多个文件(替换、插入、删除、追加、更改……);简化对文件的反复操作;编写转换程序等。
【对进入的数据进行全局的处理,增加,删除,修改某些部分,得出结果】
Sed是一非交互性文本编辑器,它编辑文件或标准输入导出的文本拷贝,标准输入可能来自键盘、文件、重定向、字符串、变量或一管道文件
|
主要作用:
|
1. 抽取域
2. 匹配正则表达式
3. 比较域
4. 增加、附加、替换
|
调用方式:
|
1. 命令行输入
sed [选项] ‘sed命令’ 输入文件
2. 使用sed脚本
sed [选项] –f sed脚本文件 输入文件
3. 使sed脚本可执行
在脚本第一行具有sed命令解释器
Sed脚本文件 [选项] 输入文件
|
选项:
|
-n:不打印,不写编辑行到标准输出,缺省情况下打印所有行[编辑/未编辑]p命令可以打印编辑行
-c:下一命令是编辑命令,使用多项编辑时加入此选项
-f: 调用sed脚本 sed –f sedScriptFile targetFile
|
sed 命令可以指定零个、一个或两个地址。每个地址都是一个描述模式、行号、或者行寻址符号的正则表达式。
如果没有指定地址,那么命令将应用于每一行。
如果只有一个地址,那么命令将应用于与这个地址匹配的任意行。
如果指定了由逗号分隔的两个地址,那么命令应用于匹配第一个地址的第一行和他后面的行,直到匹配第二个地址的行(包括此行)。
如果地址后面跟有感叹号(!),那么命令就应用于不匹配该地址的所有的行。
【定位后编辑】
保存sed输出
$sed ‘sed-command’ inputfile> myoutfile
使用sed时,缺省从第一行,可以进行定位:使用行号或使用正则
定位方式:
|
x
|
行x
|
X,y
|
行x到行y
|
/pattern/
|
模式
|
/pattern/pattern/
|
两个模式
|
/pattern/,x
|
模式+行【在给定行号上查询模式】
|
X,y /pattern/
|
通过行号和模式查询匹配行
|
X,y!
|
不包含指定行号
|
基本的sed编辑命令:
|
P
|
打印匹配行 print
|
=
|
打印匹配行行号
|
a\
|
定位行号后附加新文本信息 append
|
i\
|
定位行号后插入 insert
|
d
|
删除定位行 delete
|
c\
|
用新文本替换定位文本 change
|
s
|
使用替换模式替换相应模式
|
r
|
从另一个文件中读文本 read
|
w
|
写文本到一个文件 write
|
q
|
第一个模式匹配完成后退出或立即退出
|
{}
|
定位执行命令组
|
n
|
从另一个文件中读文本下一行,并附加在下一行
|
g
|
将模式2黏贴到/pattern n/
|
y
|
传送字符
|
示例:[dream为数据文件]
|
基本用法
|
1. 显示第二行
$sed –n ‘2p’ dream
2. 显示一到三行
$sed –n ‘1,3p’ dream
3. 匹配模式
$sed –n ‘/dreamb/’p dream
4. 使用模式和行号进行匹配
$sed –n ‘4,/The/’p dream
【只能加一个行号,不能变为区间】
5. 打印匹配行行号
$sed –n ‘/dream/=’ dream
6. 匹配元字符
$sed –n ‘/\$/’p dream
7. 显示整个文件
$sed –n ‘1,$p’ dream
8. 匹配字符串
$sed –n ‘/.*ing/’p dream
9. 首行
$sed –n ‘1p’ dream
10. 行号打印
$sed –e ‘/music/=’ quote.txt 整个文件并打印匹配行号
$sed –n ‘/music/=’ quote.txt 只打印匹配行号
|
附加/插入/修改文本
|
使用符号a\,可以将指定文本一行或多行附加到指定行,若不指定放置位置,默认放入第一行。
注:附加操作,结果到标准输出,不能被编辑,必须存到另一个文件,再运行一个sed编辑
插入文本 i\ 修改文本 c\
11. 匹配行后插入一行
$sed ‘/dreamb/a\”appended line”’ dream
【会自动换行】
12. 插入文本
$sed ‘2 i\ “inserted line”’ dream
【在第二行之前加一行】
sed "/user/ i\test" auction.xml
在匹配行前插入test
13. 修改文本
$sed ‘3 c\ “changed line”’ dream
【整行替换掉】
【注:可以用行,/正则/ 搞定】
|
删除文本
|
命令格式: [address[,address]] d
14. 删除行
$sed ‘1d’ dream
$sed ‘1,3d’ dream
15. 删除匹配行
$sed ‘/dreamb/d’ dream
15.1 删除两个匹配行之间的数据
$sed –n ‘/BEGIN/,/END/p’ myfile | more
|
替换文本
|
格式:[address[,address]] s/pattern-find/replacement-pattern/[g,p,w,n]
n 1到512之间的一个数字,表示对本模式中指定模式第n次出现的情况进行替换。
g 对模式空间所有出现的情况进行全局更改【缺省只替换首次出现的模式 】
p 打印模式空间的内容
w file
16. 替换
$sed ‘s/dreamb/DREAMB’ dream
【问题:这里是如何执行的?报错】
17. 全局替换
$sed ‘s/The/Wow!/g’ dream
18. 替换后重定向到文本
$sed ‘s/dreamb/Dream/w sed.out’ dream
【只输出替换行】
19. 读取部分写入另一个文件
$sed ‘1,2 w filedt’ dream
$sed ‘/dream/ w filedt’ dream
【注: 在命令和文件名之间必须有一个空格。每个脚本最多只能打开10个文件。】
20. 首次匹配后退出
$sed ‘/dream/q’ dream
【遇到匹配之前的内容还是要输出的】
21. 显示文件中的控制字符
格式: [ address[,address]]l
$sed –n ‘1,$l’ dream 【小写字母l】
22. 去除行首数字
$sed ‘s/^[0-9]//g’ dream
23. Shell向sed传值
$NAME=”go there”
$REP=”GO”
$echo $NAME | sed “s/go/$REP/g” 这里必须双引号【此时sed单引号不被解析】
24. 使用替换修改字符串(title前面加test)(注意和附件文本不要混淆)
sed -n "s/^title/test &/p" auction.xml
|
转换文本
|
语法: y/abc/xyz/
$ cat test.txt
1 cow
2 cow
3 pig
4 cow
$ sed 'y/cp/wd/' test.txt
1 wow
2 wow
3 dig
4 wow
(c转换成w,p转换成d)
|
sed补充:
|
A. 分组命令
sed 使用大括号“{}”将一个地址嵌套在另一个地址中,或者在相同的地址上应用多个命令。
左大括号必须在行末,而且右大括号本身必须单独占一行。要确保在大括号之后没有空格。
可以使用大括号将编辑命令括起来以对某个范围的行应用多个命令。
$cat test.txt
1 cow
2 cow
3 pig
4 cow
$ cat test.sed
/^1/,/^3/{
s/cow/pig/
/^2/d
}
$ sed -f test.sed test.txt
1 pig
3 pig
4 cow
输出到不同文件:
/^1/,/^3/{
/^1/w 1out.txt
/^2/w 2out.txt
/^1/,/^3/w allout.txt
}
|
分享到:
相关推荐
Linux笔记——命令:sed Linux笔记——命令:grep Linux笔记——命令:find Linux笔记——命令:Sort,uniq,join,cut,paste,split Linux笔记——shell基础:变量&本地变量&位置变量&特定变量参数 Linux笔记——条件测试...
本文主要是对linux-shell脚本命令中的sed命令进行简单介绍。
处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕
1 Linux主要shell命令详解 2 Linux bash shell脚本语法入门 3 Shell基本命令 4 使用 sed 编辑器
awk、sed、grep是linux的三剑客,在文本处理的场景中,掌握这三个命令真的是很有用
linux命令中Sed各种使用方式
sed原理、机制探究,适合sed深入。 文档包含4大篇修炼文章: sed修炼系列(一):花拳绣腿之入门篇 sed修炼系列(二):武功心法(info sed翻译+注解) sed修炼系列(三):sed高级应用之实现窗口滑动技术 sed修炼系列(四):...
5.5: sed高级应用 、 awk基本用法 、 总结和答疑.docx
linux sed 命令详解 资源收集 linux sed 命令详解 资源收集
linux shell命令sed的使用方法
linux 系统 sed 命令使用方法linux 系统 sed 命令使用方法linux 系统 linux 系统 sed 命令使用方法linux 系统 sed 命令使用方法sed 命令使用方法
linux sed命令详解
这个是我在学习Linux的时候做的思维导图笔记,主要是Linux的一些基础知识。免费提供下载,学习分享。 该文档分为以下几个部分: 1.shell语法:包含格式化输入输出、数组定义、变量定义方法、运算方法、流程控制、...
AWK命令详解 sed命令详解 AWK命令详解 sed命令详 AWK命令详解 sed命令详解解
awk命令简linux_tee_命令详解Sed_命令.doc SHELL里面的常用命令 有助于SHELL的提高
Sed命令是linux下的一个非常有用的命令,特别是在shell脚本中经常会使用到他。 熟悉他你会觉得非常有趣哦! 1.sed -n '2'p filename 打印文件的第二行。 2.sed -n '1,3'p filename 打印文件的1到3行 3. sed -n '/...
文章主要介绍Linux下sed命令的用法,感兴趣的朋友可以看看。