练习

- 打印某行到某行之间的内容

截取2.txt中abc行和def行之间的内容,示例命令如下:

[root@minglinux-01 ~]# cat 2.txt 
123
456
abc
abc123
#$%^abc123
****
def
$$$$$
qazplm
QWER
[root@minglinux-01 ~]# sed -n '/abc/,/def/p' 2.txt 
abc
abc123
#$%^abc123
****
def
- sed转换大小写

sed中,使用\u表示大写,\l表示小写。

将所有小写变成大写:

[root@minglinux-01 ~]# cat 2.txt 
123
456
abc
abc123
#$%^abc123
****
def
$$$$$
qazplm
QWER
[root@minglinux-01 ~]# sed 's/[a-z]/\u&/g' 2.txt   \\&表示前面//里匹配的内容
123
456
ABC
ABC123
#$%^ABC123
****
DEF
$$$$$
QAZPLM
QWER

将每个单词的第一个小写字母变大写:

[root@minglinux-01 ~]# sed 's/\b[a-z]/\u&/g' 2.txt    //这里的\b是单词的边界
456
Abc
Abc123
#$%^Abc123
****
Def
$$$$$
Qazplm
QWER

将大写变小写:

[root@minglinux-01 ~]# sed 's/[A-Z]/\l&/g' 2.txt 
123
456
abc
abc123
#$%^abc123
****
def
$$$$$
qazplm
qwer
- sed在某一行最后添加一个数字
[root@minglinux-01 ~]# cat 2.txt 
123
456
abc
abc123
#$%^abc123
****
def
$$$$$
qazplm
QWER
[root@minglinux-01 ~]# sed -r 's/(^a.*)/\1 ming/' 2.txt   \\这里的\1引用前面正则表达式中第一个捕获括号里面的内容
123
456
abc ming
abc123 ming
#$%^abc123
****
def
$$$$$
qazplm
QWER
- 删除某行到最后一行
[root@minglinux-01 ~]# sed '/qazplm/{p;:a;N;$!ba;d}' 2.txt 
123
456
abc
abc123
#$%^abc123
****
def
$$$$$
qazplm

连匹配的行也删除:

[root@minglinux-01 ~]# sed -r '/qazplm/,$d' 2.txt 
123
456
abc
abc123
#$%^abc123
****
def
$$$$$
- 打印1到100行含某个字符串的行
[root@minglinux-01 ~]# sed -n '1,100{/abc/p}'  2.txt 
abc
abc123
#$%^abc123
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 基础命令 主要的命令和快捷键 Linux系统命令由三部分组成:cmd + [options]+[operation...
    485b1aca799e阅读 1,135评论 0 0
  • 一、前言 我们都知道,在Linux中一切皆文件,比如配置文件,日志文件,启动文件等等。如果我们相对这些文件进行一些...
    以七v为书阅读 1,565评论 0 5
  • 简介 sed 是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(p...
    699b979fc4da阅读 1,051评论 0 1
  • 一、快捷键 ctr+b 执行ctr+/ 单行注释ctr+c ...
    o_8319阅读 5,907评论 2 16
  • May木棉阅读 223评论 0 0