20151201正则第三部分(sed) 最强的功能是替换!
来源:互联网 发布:nginx代理上网 编辑:程序博客网 时间:2024/06/14 03:29
正则第三部分:
1.打印指定行
sed '10p' -n 1.txt
sed '1,4p' -n 1.txt
sed '5,$p' -n 1.txt
2.打印包含某个字符串的行
sed -n '/root/p' 1.txt
可以使用 ^ . * $等特殊符号
3.-e 可以实现同时进行多个任务
sed -e '/root/p' -e '/body/p' -n 1.txt 也可以用;实现 sed '/root/p; /body/p' -n 1.txt
4.删除行
sed '/root/d' 1.txt 删除带有root的行
sed '1d' 1.txt 删除第1行
sed '1,10d' 1.txt 删除第1到10行
5.替换 (最强)
sed '1,2s/ot/to/g' 1.txt, 其中s就是替换的意思,g为全局替换,否则只替换第一次的,/也可以为 #, @ 等
6.删除所有数字 ,替换(特殊用法)
sed 's/[0-9]//g' 1.txt
删除所有非数字 sed 's/[^0-9]//g' 1.txt
调换两个字符串位置 head -n2 1.txt |sed 's/\(root\)\(.*\)\(bash\)/\3\2\1/'
直接修改文件内容 sed -i 's/ot/to/g' 1.txt
测试如下:
主要的功能1.1查找:
[root@niejicai-linux ~]# sed '1p' -n 1.txt 打印第一行(输出第一行)
root:x:0:0:root:/root:/bin/bash
[root@niejicai-linux ~]# grep -n '.*' 1.txt |sed '1p' -n 打印输出第1行,并且打印出行号
1:root:x:0:0:root:/root:/bin/bash
[root@niejicai-linux ~]# grep -n '.*' 1.txt |sed '1,5p' -n 打印输出第1行到第5行,以及行号
1:root:x:0:0:root:/root:/bin/bash
2:bin:x:1:1:bin:/bin:/sbin/nologin
3:daemon:x:2:2:daemon:/sbin:/sbin/nologin
4:adm:x:3:4:adm:/var/adm:/sbin/nologin
5:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
[root@niejicai-linux ~]# grep -n '.*' 1.txt |sed '5,$p' -n
打印输出从第5行到最后一行与行号
5:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
6:sync:x:5:0:sync:/sbin:/bin/sync
7:shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
.......
44:user42:x:5561:500::/home/user42:/bin/bash
46:user0:x:5563:5563::/home/user0:/bin/bash
[root@niejicai-linux ~]# sed -n '4,$p' 1.txt 这个也是打印出从第4行到最后一行
adm:x:3:4:adm:/var/adm:/sbin/nologin
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
.........
[root@niejicai-linux ~]# grep -n '.*' 1.txt |sed '/root/p' -n 打印出带有root的行并且显示行号
1:root:x:0:0:root:/root:/bin/bash
11:operator:x:11:0:operator:/root:/sbin/nologin
40:root
[root@niejicai-linux ~]# grep -n '.*' 1.txt |sed -r 'root|mysql/p'-n 这里或者|也可以打印出来 并且显示行号 ,-r不需要加脱译(不需要转译)
1:root:x:0:0:root:/root:/bin/bash
2:bin:x:1:1:bin:/bin:/sbin/nologin
3:daemon:x:2:2:daemon:/sbin:/sbin/nologin
...............
46:user0:x:5563:5563::/home/user0:/bin/bash
[root@niejicai-linux ~]# grep -n '.*' 1.txt | sed -r '/(oo)+/p' -n
1:root:x:0:0:root:/root:/bin/bash
5:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
9:mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10:uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
11:operator:x:11:0:operator:/root:/sbin/nologin
26:postfix:x:89:89::/var/spool/postfix:/sbin/nologin
37:roooooot
40:root
1.2匹配:
[root@niejicai-linux ~]# grep -n '.*' 1.txt |sed -e '/root/p' -e '/mysql/p' -n -e 可以实现同时进行多个任务
1:root:x:0:0:root:/root:/bin/bash
11:operator:x:11:0:operator:/root:/sbin/nologin
40:root
[root@niejicai-linux ~]# grep -n '.*' 1.txt |sed '/root/p;/mysql/p' -n -e 可以实现同时进行多个任务 ,也可以用;号
1:root:x:0:0:root:/root:/bin/bash
11:operator:x:11:0:operator:/root:/sbin/nologin
40:root
[root@niejicai-linux ~]# grep -n '.*' 1.txt |sed -r '/ro[o|t]t/p' -n 这里的|不是或的意思,这样表示o,|,t三选一。
1:root:x:0:0:root:/root:/bin/bash
11:operator:x:11:0:operator:/root:/sbin/nologin
40:root
[root@niejicai-linux ~]# grep -n '.*' 1.txt |sed '10,$d' 删除第10行到最后一行
1:root:x:0:0:root:/root:/bin/bash
2:bin:x:1:1:bin:/bin:/sbin/nologin
3:daemon:x:2:2:daemon:/sbin:/sbin/nologin
4:adm:x:3:4:adm:/var/adm:/sbin/nologin
5:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
6:sync:x:5:0:sync:/sbin:/bin/sync
7:shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
8:halt:x:7:0:halt:/sbin:/sbin/halt
9:mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
[root@niejicai-linux ~]# grep -n '.*' 1.txt |sed -r '/root|mysql/d' 把带有root或者mysql的行删除去
2:bin:x:1:1:bin:/bin:/sbin/nologin
3:daemon:x:2:2:daemon:/sbin:/sbin/nologin
4:adm:x:3:4:adm:/var/adm:/sbin/nologin
5:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
6:sync:x:5:0:sync:/sbin:/bin/sync
7:shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
8:halt:x:7:0:halt:/sbin:/sbin/halt
9:mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10:uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
12:games:x:12:100:games:/usr/games:/sbin/nologin
13:gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
[root@niejicai-linux ~]# grep -n '.*' 1.txt |sed -r '/[0-9]/d' 删除带有数字开头的行
1.3替换
[root@niejicai-linux ~]# grep -n '.*' 1.txt |sed 's/root/toor/g' 把root替换成toor
1:toor:x:0:0:toor:/toor:/bin/bash
2:bin:x:1:1:bin:/bin:/sbin/nologin
3:daemon:x:2:2:daemon:/sbin:/sbin/nologin
..........
46:user0:x:5563:5563::/home/user0:/bin/bash
[root@niejicai-linux ~]# grep -n '.*' 1.txt |sed '1,10s/root/toor/g' 还可以指定行,1到10行,进行把root替换成toor
1:toor:x:0:0:toor:/toor:/bin/bash
2:bin:x:1:1:bin:/bin:/sbin/nologin
..................
46:user0:x:5563:5563::/home/user0:/bin/bash
[root@niejicai-linux ~]# grep -n '.*' 1.txt |sed 's/[0-9]//g' 把数字删除
:root:x:::root:/root:/bin/bash
:bin:x:::bin:/bin:/sbin/nologin
...............
:user:x:::user,ddddddddddd,aaaaaaaaaaa,:/home/user:/bin/bash
:user:x::::/home/user:/bin/bash
[root@niejicai-linux ~]# grep -n '.*' 1.txt |sed 's/[^0-9]//g' 把非数字删除
100
211
322
...........
[root@niejicai-linux ~]# head 1.txt |sed -r 's/([^:]+)(:.*:)([^:]+$)/\3\2\1/' 主要是练逻辑能力,平时用了很少。
root:x:0:0:root:/root:/bin/bash
1 2
把1和2调换过来
/bin/bash:x:0:0:root:/root:root
/sbin/nologin:x:1:1:bin:/bin:bin
/sbin/nologin:x:2:2:daemon:/sbin:daemon
/sbin/nologin:x:3:4:adm:/var/adm:adm
/sbin/nologin:x:4:7:lp:/var/spool/lpd:lp
/bin/sync:x:5:0:sync:/sbin:sync
/sbin/shutdown:x:6:0:shutdown:/sbin:shutdown
/sbin/halt:x:7:0:halt:/sbin:halt
/sbin/nologin:x:8:12:mail:/var/spool/mail:mail
/sbin/nologin:x:10:14:uucp:/var/spool/uucp:uucp
[root@niejicai-linux ~]#
0 0
- 20151201正则第三部分(sed) 最强的功能是替换!
- sed的替换功能
- sed直接替换文本文件(sed与awk是正则表达的俩大神器)
- 正则的替换功能
- 使用sed替换替换指定行的日期部分
- sed 正则替换
- 正则表达式的部分替换 $1~$99
- 正则表达式部分替换
- find命令是功能最强的命令之一
- 使用正则表达式的替换功能
- 强大灵活的Sublime3正则替换功能
- sed的替换操作
- 常见网络设备的功能解说 第三部分
- 28-正则表达式-05-正则表达式(常见的功能-替换)
- shell sed 与正则替换时间串
- 正则只替换URL字符串里面的汉字部分
- 正则只替换URL字符串里面的汉字部分
- 评价SAP的PP:PP你认为最强大的是哪部分
- The type javax.servlet.http.HttpServletRequest cannot be resolved.
- Android strings.xml中 %1$s 和 %1$d 的使用
- JDK7新特性
- Errors running builder 'xx' on project_java
- python使用socket
- 20151201正则第三部分(sed) 最强的功能是替换!
- 使用Alcatraz来管理Xcode插件
- 距离和相似性度量
- 简单LRU算法实现的Cache(C++)
- fvnhsdfhdfsh
- shell脚本调试报错:"syntax error: unexpected end of file"
- MQ入门简介
- Android Studio 快捷键
- 测试代码片