linux sed 命令
来源:互联网 发布:淘宝备注怎么备注 编辑:程序博客网 时间:2024/05/20 01:08
一、sed 是一种在线编辑器,一次处理一行内容。
处理过程:
1) 把当前处理的行存储在临时缓冲区,即“模式空间”;
2) 用sed命令处理缓冲区中的内容;
3) 将处理后的缓冲区内容输出到默认标准输出---屏幕;
4) 读取下一行,直到文件末尾;
备注:sed处理的时缓冲区中的内容,即文件内容的副本,原文件内容并未被修改。若使用重定向将处理后的内容重新写回文件,会修改文件内容。
二、sed命令参数
1) -n sed默认将处理过的所有数据(即读到临时缓冲去的内容和处理后的内容)输出到屏幕,-n 参数告诉sed使用安静模式,即只将sed命令处理后的内容输出。
如:
[root@host_233 jiall]# vi sed.txt ===> 查看sed.txt 文件内容
11
22
33
44
55
[root@host_233 jiall]# sed '2,4p' sed.txt ===> 非安静模式 输出 sed.txt 的 2~4行内容
11
22 ===> 输出读入临时缓冲区的原sed.txt中的行
22 ===> 输出'p'(print)命令执行结果
33
33
44
44
55
[root@host_233 jiall]# sed -n '2,4p' sed.txt ===> 安静模式
22
33
44
2) -e 直接在指令列模式上进行 sed 的动作编辑
如:
[root@host_233 jiall]# sed -e 's/1/2/' -e '/5/d' sed.txt ===>数字1,2代表文本内容;5 代表的行号;
21 ===> 文本替换只进行一次,多次替换使用's/1/2/g'
22
33
44
===> 第五行被删除
3) -f 将待执行的sed命令写到文件中,通过 -f filename 导入
4) -i 直接修改文件内容,不输出到屏幕
5) -r 使用扩展型正则表示语法(不甚理解,还需研究!)
三、 sed 动作说明
[n1[,n2]]function
n1: 执行动作的开始行;
n2: 执行动作的结束行;
function:执行的动作;
function可指定为:
a:(add)增加 将a后面的内容增加到当前行的下一行;
c:取代 用c后的内容取代n1~n2之间的行;
d:(delete) 删除 删掉d之前选择的内容;
i:(insert) 插入 将i后面的内容增加到当前行的上一行;
p:(print) 打印 将p前选择的内容打印;
s: 取代 配合正则表达式使用
&: ?
四、 sed 命令使用示例
1) d命令 删除
#sed '2d' sed.txt
11
33
44
55
#sed '2,$d' sed.txt
#sed '$d' sed.txt
#sed '/333/d' sed.txt
2) s命令 替换
#sed ‘s/111/666/’ sed.txt
#sed ‘s/111/666/g’ sed.txt
#sed -n 's/^111/666/p' sed.txt
#sed 's/^111/&666/' sed.txt
#sed -n 's/\(love\)able/\1rs/p' sed.txt
#sed 's#10#100#g' sed.txt
3) 逗号 选定行的范围 通过行号或行部分/全部内容界定行
#sed -n ‘/111/,/333/p’ sed.txt
#sed -n '5,/^555/p' sed.txt
#sed '/test/,/check/s/$/sed test/' sed.txt
4) 多点编辑 e命令
#sed -e '1,5d' -e 's/test/check/' sed.txt
命令执行顺序影响结果
sed --expression='s/test/check/' --expression='/love/d' //--expression能给sed表达式赋值。
sed '/test/r file' //r命令:从file里的内容被读进来,显示在与test匹配的行后面,如果匹配多行,则file的内容将显示在所有匹配行的下面。
sed -n '/test/w file' //w命令 所有包含test的行都被写入file里。
sed '/^test/a\\--->this is a example' //a命令:'this is aexample'被追加到以test开头的行后面,sed要求命令a后面有一个反斜杠。
sed '2a Drink tea or ......\ drink beer ?' //在第二行后追加多行,行之间必须已反斜线分隔
sed '2,5c No 2-5 number' //c命令: 将2-5行的内容取代为 No 2-5 number
sed -n '5,7p' //p命令:列出5-7行
数据搜寻并执行命令
cat /etc/passwd | sed -n '/root/{s/bash/blueshell/;p}' //搜索/etc/passwd,找到root对应的行,执行后面花括号中的一组命令,每个命令之间用分号分隔,这里把bash替换为blueshell,再输出这行
sed 's/要被取代的字串/新的字串/g'
/sbin/ifconfig eth0 | grep 'inet addr' | sed 's/^.*addr://g' | sed 's/Bcast.*$//g' //查询IP
插入:i命令
sed '/test/i\\
new
line
-------------------------' example // 如果test被匹配,则把反斜杠后面的文本插入到匹配行的前面。
sed '2a drink tea' example //在第二行后(亦即是加在第三行)加上drink tea
sed '2i drink tea' example //在第二行前插入
下一个:n命令
sed '/test/{ n; s/aa/bb/; }' example-----如果test被匹配,则移动到匹配行的下一行,替换这一行的aa,变为bb,并打印该行,然后继续。
变形:y命令
sed '1,10y/abcde/ABCDE/' example-----把1--10行内所有abcde转变为大写,注意,正则表达式元字符不能使用这个命令。
退出:q命令
sed '10q' example-----打印完第10行后,退出sed。
保持和获取:h命令和G命令
sed -e '/test/h' -e '$G example
-----在sed处理文件的时候,每一行都被保存在一个叫模式空间的临时缓冲区中,除非行被删除或者输出被取消,否则所有被处理的行都将
打印在屏幕上。接着模式空间被清空,并存入新的一行等待处理。在这个例子里,匹配test的行被找到后,将存入模式空间,h命令将其复制并存入一个称为保
持缓存区的特殊缓冲区内。第二条语句的意思是,当到达最后一行后,G命令取出保持缓冲区的行,然后把它放回模式空间中,且追加到现在已经存在于模式空间中
的行的末尾。在这个例子中就是追加到最后一行。简单来说,任何包含test的行都被复制并追加到该文件的末尾。
保持和互换:h命令和x命令
sed -e '/test/h' -e '/check/x' example
-----互换模式空间和保持缓冲区的内容。也就是把包含test与check的行互换。
- sed linux 命令
- linux sed命令详解
- linux sed命令详解
- linux sed命令详解
- linux sed命令详解
- linux sed命令详解
- linux sed 命令详解
- linux sed命令详解
- linux sed命令
- linux sed命令
- linux sed命令详解
- linux sed 命令详解
- linux sed命令详解
- linux sed命令详解
- linux sed命令详解
- linux sed命令详解
- linux sed命令
- linux sed命令详解
- 【笔试】19、该类型添加赋值运算符函数
- Android gallery 3D效果
- 如何将ppt或其他文档转为pdf格式
- QT简单软键盘+SYSZUXpinyin修改
- 1660 - Cable TV Network(最大流最小割)
- linux sed 命令
- python 语言技巧特点
- 循环链表的有趣遍历
- MSSQL Server的连接问题分析和解决(1)
- 9.12测试(一)——应用程序一运行就崩溃,且每次崩溃的位置都不一样
- 使用WinDbg获得托管方法的汇编代码
- Ubuntu下QTE的安装
- 黑马程序员_java基础之面向对象(二)
- hdu4280 Island Transport 最大流模板Dinic算法