Linux--sed 工具的使用

一、sed的基本用法

    非交互,基于模式匹配过滤及修改文本
    逐行处理,并将结果输出到屏幕
    可实现对文本的输出、删除、替换、复制、剪切、导入、导出等各种操作

sed文本处理工具的用法:

用法:sed     [选项]    '编辑指令'     文件

常用选项:

-e<script> 或 --expression=<script> 以选项中指定的script来处理输入的文本文件
-f<script文件> 或 --file=<script文件> 以选项中指定的script文件来处理输入的文本文件
-h 或 --help 显示帮助
-n 或 --quiet或--silent 仅显示处理后的结果       //常用
-V 或 --version 显示版本信息
-i 直接修改文件内容                                //先测试,再使用
-r 启用扩展的正则表达式,应作为首个选项
{} 可组合多个命令,以;分隔

常用编辑命令

a :新增          a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)
c :取代          c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行
d :删除行        所以 d 后面通常不接任何东西
i :插入          i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行)
p :增加行        亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行
s :取代          可以直接取代字符串
   s/lll/zzz/       将每行的第1个lll替换为zzz
   s/lll/zzz/3      将每行的第3个lll替换为zzz
   s/lll/zzz/g      将所有的lll都替换为zzz
    替换操作的分隔" / " 可改用其他字符   ! @ # $ % ^ & *  便于修改文件路径
 ,  3到5
;  3和8
!   取反操作


[root@test opt]# cat test01.txt

1 2 3 4 5 6 7 8 9
9 8 7 6 5 4 3 2 1
a b c d e f
A B C D E F


1、sed 命令  -n 选项  p 输出操作

[root@test opt]# sed -n '1p' test01.txt                 // 打印第一行,'1p'打印第一行,但是需要加上-n才能正确输出第一行-

1 2 3 4 5 6 7 8 9                                                    // -n   选项相当于过滤一样,如果不加 -n 就会打印文件全部内容


2)  p 输出操作的一些细节

[root@test opt]# sed -n 'p' test01.txt             //  输出所有行,相当于  cat  test01.txt
1 2 3 4 5 6 7 8 9
9 8 7 6 5 4 3 2 1
a b c d e f

A B C D E F                                                                                                                                                                   

[root@test opt]# sed -n '4p' test01.txt         //  输出第 4 行

A B C D E F

[root@test opt]# sed -n '2,4p' test01.txt         //输出2~4行信息
9 8 7 6 5 4 3 2 1
a b c d e f

A B C D E F

[root@test opt]# sed -n '1p;3p' test01.txt         //输出第1行和第3行
1 2 3 4 5 6 7 8 9
a b c d e f
[root@test opt]# sed -n '2,+1p' test01.txt         //输出第2行及之后的1行
9 8 7 6 5 4 3 2 1
a b c d e f
[root@test opt]# sed -n '/1$/p' test01.txt            //输出以1为结尾的行
9 8 7 6 5 4 3 2 1
[root@test opt]# sed -n '/^1/p' test01.txt            /输出以1为开头的行
1 2 3 4 5 6 7 8 9
[root@test opt]# sed -n 'p;n' test01.txt            //输出奇数行
1 2 3 4 5 6 7 8 9
a b c d e f
[root@test opt]# sed -n 'n;p' test01.txt            //输出偶数行
9 8 7 6 5 4 3 2 1

A B C D E F

[root@test opt]# sed -n '2,$p' test01.txt        //输出第二行直到最后一行
9 8 7 6 5 4 3 2 1
a b c d e f
A B C D E F
[root@test opt]# sed -n '$=' test01.txt         //输出文本总行数
4


2、sed  命令   -i 选项    d 删除操作

1)  正常情况下,sed命令所做的处理只是把操作结果(包括打印、删除等)输出到当前终端屏幕,而并不会对原始文件做任何更改

[root@test opt]# sed '1d' test01.txt         //屏幕打印的文本已经没显示第一行,但是没加 -i选项这只是展现的结果。

9 8 7 6 5 4 3 2 1
a b c d e f
A B C D E F
[root@test opt]# cat test01.txt
1 2 3 4 5 6 7 8 9
9 8 7 6 5 4 3 2 1
a b c d e f
A B C D E F

[root@test opt]# sed -i '1d' test01.txt        //这时你会发现屏幕没有输出,其实第一行已经删除了

[root@test opt]# cat test01.txt
9 8 7 6 5 4 3 2 1
a b c d e f
A B C D E F

2)d 删除的一些需要掌握的技巧

sed     '3,5d'     test01.txt                  删除第3~5行
sed     '/xml/d'    test01.txt                删除所有包含xml的行
sed     '/xml/!d'    test01.txt               删除不包含xml的行,!符号表示取反
sed     '/^install/d'    test01.txt           删除以install开头的行
sed     '$d'    test01.txt                    删除文件的最后一行
sed     '/^$/d'    test01.txt                 删除所有空行



3、简单说下 s 选项替换文本

sed     's/xml/XML/'     test01.txt            将每行第一个xml替换为XML
sed     's/xml/XML/3'     test01.txt           将每行中的第3隔xml替换为XML
sed     's/xml/XML/g'     test01.txt           将所有的xml都替换为XML
sed     's/xml//g'     test01.txt              将所有的xml都删除(替换为空串)
sed     's/doc/&s/g'    test01.txt            将所有的doc都替换为docs,&代表查找串
sed     '4,7s/^/#/'     test01.txt             将第4~7行注释掉(行首加#号)
sed     's/^#an/an/'     test01.txt            解除以#an开头的行的注释(去除行首的#号)







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值