- 打印某行到某行之间的内容
截取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