- 打印某行到某行之间的内容 http://ask.apelearn.com/question/559
例如:有个文件test的内容如下:
ert
fff
**
[abcfd]
123
324
444
[rty]
**
fgfgf
怎么能截取
[abcfd]
123
324
444
[rty]
这一部分出来呢?
[root@localhost test]# sed -n '/\[abcfd\]/,/\[rty\]/'p 1.txt
[abcfd]
123
324
444
[rty]
- 这里要注意:先匹配[abcfd]的时候,要先将[]脱意,加-r 脱意不行的,要用\脱意;
[root@localhost test]# sed -n '/\[abcfd\]/'p 1.txt
[abcfd
sed转换大小写 http://ask.apelearn.com/question/7758
- sed中,使用\u表示大写,\l表示小写
- 把每个单词的第一个小写字母变大写:
[root@localhost test]# sed 's/\b[a-z]/\u&/g' 1.txt
Ert
Fff
**
[Abcfd]
123
324
444
[Rty]
**
Fgfgf
- 注意:\b:表示\b就近匹配,比如\bAB 匹配A,AB\b 匹配B;\b只能匹配字母、数字、汉字、下划线。&表示前面匹配的内容
- 把所有小写变大写:
[root@localhost test]# sed 's/[a-z]/\u&/g' 1.txt
ERT
FFF
**
[ABCFD]
123
324
444
[RTY]
**
FGFGF
- 大写变小写:
[root@localhost test]# cat 2.txt
ERT
FFF
**
[ABCFD]
123
324
444
[RTY]
**
FGFGF
[root@localhost test]# sed 's/[A-Z]/\l&/'g 2.txt
ert
fff
**
[abcfd]
123
324
444
[rty]
**
fgfgf
- sed在某一行最后添加一个数字http://ask.apelearn.com/question/288
[root@localhost test]# cat 3.txt
askdj
aslkd aslkdjf3e
skdjfsdfj
sdkfjk
fsdkfjksdjfkjsdf
12sdfesdf
aslkdjfkasdjf asdlfkjaskdfj
- 在所以行后面加上数字123
[root@localhost test]# sed -r 's/(.*)/&123/'g 3.txt
askdj123
aslkd aslkdjf3e123
skdjfsdfj123
sdkfjk123
fsdkfjksdjfkjsdf123
12sdfesdf123
aslkdjfkasdjf asdlfkjaskdfj123
- 在以a开头的行后面加上数字123
[root@localhost test]# sed -r 's/(^a.*)/&123/'g 3.txt
askdj123
aslkd aslkdjf3e123
skdjfsdfj
sdkfjk
fsdkfjksdjfkjsdf
12sdfesdf
aslkdjfkasdjf asdlfkjaskdfj123
- 用\1来表示前面()内容
[root@localhost test]# sed -r 's/(^a.*)/\1123/'g 3.txt
askdj123
aslkd aslkdjf3e123
skdjfsdfj
sdkfjk
fsdkfjksdjfkjsdf
12sdfesdf
aslkdjfkasdjf asdlfkjaskdfj123
- 删除某行到最后一行 http://ask.apelearn.com/question/213
[root@localhost test]# cat 3.txt
askdj
aslkd aslkdjf3e
skdjfsdfj
sdkfjk
fsdkfjksdjfkjsdf
12sdfesdf
aslkdjfkasdjf asdlfkjaskdfj
- 删除sdkfjk到最后一行
[root@localhost test]# sed '/sdkfjk/,$'d 3.txt
askdj
aslkd aslkdjf3e
skdjfsdfj
- 删除指定行的下一行到最后一行
[root@localhost test]# cat 2.txt
ERT
FFF
**
[ABCFD]
123
324
444
[RTY]
**
FGFGF
[root@localhost test]# sed '/123/{p;:a;N;$!ba;d}' 2.txt
ERT
FFF
**
[ABCFD]
123
- 打印1到100行含某个字符串的行 http://ask.apelearn.com/question/1048
[root@localhost test]# cat 2.txt
ERT
FFF
**
[ABCFD]
123
324
444
[RTY]
**
FGFGF
方法一:
[root@localhost test]# sed -n '1,10{/123/p}' 2.txt
123
方法二:
[root@localhost test]# sed -n '1,10'p 2.txt |sed -n '/123/'p
123