9.4/9.5 sed

# 9.4  sed 上

- 首先在root目录下创建一个目录sed ,把grep目录下的passwd文件拷贝到 sed目录 当前目录下来,做实验每一个目录一个文件比较好,不容易乱
```
[root@aminglinux-01 ~]# ls
111          1_sorft.txt  1.txt.bak  2.txt.bak  aminglinux         biji.txt    test
123          1.txt        234        3.txt      anaconda-ks.cfg.1  get-pip.py
1_heard.txt  1.txt~       2.txt      4.txt      bb.txt             grep
[root@aminglinux-01 ~]# mkdir sed
[root@aminglinux-01 ~]# cd sed/
[root@aminglinux-01 sed]# cp ../grep/passwd test.txt
[root@aminglinux-01 sed]# pwd
/root/sed
[root@aminglinux-01 sed]# ls
test.txt
[root@aminglinux-01 sed]#
```
- 首先看sed怎么样去实现grep的功能,匹配的功能
- sed - '/字符/'p test.txt    打印所有的行,而且还把 相关的打印了2遍
```
[root@aminglinux-01 sed]# sed '/root/'p test.txt
root:x:0:0:root:/root:/bin/bash
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
dskdklldkdddkdkrao:222
daemon:x:2:2:daemon:/sbin:/sbin/NOLOGIN
222222:r.o:ldkdkdkd
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:1o1:0:operator:/root:/sbin/nologin
operator:x:1o1:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/no1ologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:998:996:User for polkitd:/:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
chrony:x:997:995::/var/lib/chrony:/sbin/nologin
aming:x:1000:1005::/home/aming:/bin/bash
user1:x:1001:1001::/home/user1:/bin/bash
user2:x:1002:1002::/home/user2:/bin/bash
user3:x:1004:1005::/home/user3:/bin/bash
user4:x:1006:1005::/home/aming111:/sbin/nologin
user5:x:1007:1007::/hoooome/user5:/bin/bash
user6:x:1008:1010::/hooome/user6:/bin/bash
saslauth:x:996:76:Saslauthd user:/run/saslauthd:/sbin/nologin
```
- 如果不想把那些无关的行 打印出来 使用命令  sed -n '/root/'p test.txt
```
[root@aminglinux-01 sed]# sed -n '/root/'p test.txt
root:x:0:0:root:/root:/bin/bash
operator:x:1o1:0:operator:/root:/sbin/nologin
[root@aminglinux-01 sed]# 
```

1. sed 也支持 .  *  +     sed -n '/r.t/'p test.txt
```
[root@aminglinux-01 sed]# sed -n '/r.t/'p test.txt
operator:x:1o1:0:operator:/root:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin 

[root@aminglinux-01 sed]# sed -n '/r*t/'p test.txt
root:x:0:0:root:/root:/bin/bash
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
operator:x:1o1:0:operator:/root:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/no1ologin
systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:998:996:User for polkitd:/:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
saslauth:x:996:76:Saslauthd user:/run/saslauthd:/sbin/nologin


[root@aminglinux-01 sed]# sed -n '/r+t/'p test.txt
[root@aminglinux-01 sed]# sed -n '/r\+t/'p test.txt 
```

2.  +需要加上脱义\ 但是也可以 sed -nr  就不用加脱义符号了
```
[root@aminglinux-01 sed]# sed -nr '/r+t/'p test.txt
[root@aminglinux-01 sed]# sed -nr '/o+t/'p test.txt
root:x:0:0:root:/root:/bin/bash
operator:x:1o1:0:operator:/root:/sbin/nologin
[root@aminglinux-01 sed]# 
```
3. 如果sed -n 不加 r  肯定就出不来, 类似grep -E 的选项
```
[root@aminglinux-01 sed]# sed -n '/o+t/'p test.txt
[root@aminglinux-01 sed]# 
```
- 匹配2次o  sed -nr '/o{2}/'p test.txt
```
[root@aminglinux-01 sed]# sed -nr '/o{2}/'p test.txt
root:x:0:0:root:/root:/bin/bash
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:1o1:0:operator:/root:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
user5:x:1007:1007::/hoooome/user5:/bin/bash
user6:x:1008:1010::/hooome/user6:/bin/bash
[root@aminglinux-01 sed]# 
```
- 匹配| 或者  sed -nr '/root|bus/'p test.txt
```
[root@aminglinux-01 sed]# sed -nr '/root|bus/'p test.txt
root:x:0:0:root:/root:/bin/bash
operator:x:1o1:0:operator:/root:/sbin/nologin
systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
[root@aminglinux-01 sed]# 
```

- sed用法不仅仅是匹配,也可以打印指定的行 打印第二行
- ![mark](http://oqxf7c508.bkt.clouddn.com/blog/20170825/205737746.png?p_w_picpathslim)
```

[root@aminglinux-01 sed]# sed -n '2'p test.txt
bin:x:1:1:bin:/bin:/sbin/nologin

打印2-5行
[root@aminglinux-01 sed]# sed -n '2,5'p test.txt
bin:x:1:1:bin:/bin:/sbin/nologin
dskdklldkdddkdkrao:222
daemon:x:2:2:daemon:/sbin:/sbin/NOLOGIN
222222:r.o:ldkdkdkd
```

- 打印25行到末行  $表示末行
```
[root@aminglinux-01 sed]# sed -n '25,$'p test.txt
user1:x:1001:1001::/home/user1:/bin/bash
user2:x:1002:1002::/home/user2:/bin/bash
user3:x:1004:1005::/home/user3:/bin/bash
user4:x:1006:1005::/home/aming111:/sbin/nologin
user5:x:1007:1007::/hoooome/user5:/bin/bash
user6:x:1008:1010::/hooome/user6:/bin/bash
saslauth:x:996:76:Saslauthd user:/run/saslauthd:/sbin/nologin
[root@aminglinux-01 sed]# 
```

- 打印全部,也就是第一行到最后一行 1,$
```
[root@aminglinux-01 sed]# sed -n '1,$'p test.txt
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
dskdklldkdddkdkrao:222
daemon:x:2:2:daemon:/sbin:/sbin/NOLOGIN
222222:r.o:ldkdkdkd
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:1o1:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/no1ologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:998:996:User for polkitd:/:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
chrony:x:997:995::/var/lib/chrony:/sbin/nologin
aming:x:1000:1005::/home/aming:/bin/bash
user1:x:1001:1001::/home/user1:/bin/bash
user2:x:1002:1002::/home/user2:/bin/bash
user3:x:1004:1005::/home/user3:/bin/bash
user4:x:1006:1005::/home/aming111:/sbin/nologin
user5:x:1007:1007::/hoooome/user5:/bin/bash
user6:x:1008:1010::/hooome/user6:/bin/bash
saslauth:x:996:76:Saslauthd user:/run/saslauthd:/sbin/nologin
[root@aminglinux-01 sed]# 
```

- sed -e  匹配指定的行还要做另外的操作,  可以写多个
```
[root@aminglinux-01 sed]# sed -e '1'p -e '/bus/'p -n test.txt
root:x:0:0:root:/root:/bin/bash
systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
[root@aminglinux-01 sed]# 


[root@aminglinux-01 sed]# sed -e '1'p -e '/bus/'p -e'/oo*/'p -n test.txt
root:x:0:0:root:/root:/bin/bash
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
dskdklldkdddkdkrao:222
daemon:x:2:2:daemon:/sbin:/sbin/NOLOGIN
222222:r.o:ldkdkdkd
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:1o1:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/no1ologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:998:996:User for polkitd:/:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
chrony:x:997:995::/var/lib/chrony:/sbin/nologin
aming:x:1000:1005::/home/aming:/bin/bash
user1:x:1001:1001::/home/user1:/bin/bash
user2:x:1002:1002::/home/user2:/bin/bash
user3:x:1004:1005::/home/user3:/bin/bash
user4:x:1006:1005::/home/aming111:/sbin/nologin
user5:x:1007:1007::/hoooome/user5:/bin/bash
user6:x:1008:1010::/hooome/user6:/bin/bash
saslauth:x:996:76:Saslauthd user:/run/saslauthd:/sbin/nologin
[root@aminglinux-01 sed]# 
```


# 9.5 sed 下
- sed  I 大小写   
```
[root@aminglinux-01 sed]# sed -n '/bus/'p test.txt
systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin

把test.txt 里面加个大写字母 BU
[root@aminglinux-01 sed]# vi test.txt

root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
dskdklldkdddkdkrao:222
daemon:x:2:2:daemon:/sbin:/sbin/NOLOGIN
222222:r.o:ldkdkdkdBUs
```
- 再来对比下sed  I 和 sed 不加I的区别
```
[root@aminglinux-01 sed]# sed -n '/bus/'p test.txt
systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
[root@aminglinux-01 sed]# sed -n '/bus/'Ip test.txt
222222:r.o:ldkdkdkdBUs
systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
[root@aminglinux-01 sed]# 
```


- 删除指定的行 sed '范围'd    sed '1,10'd test.txt 删除test.txt的 1-10行
```
[root@aminglinux-01 sed]# sed '1,10'd test.txt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:1o1:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/no1ologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:998:996:User for polkitd:/:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
chrony:x:997:995::/var/lib/chrony:/sbin/nologin
aming:x:1000:1005::/home/aming:/bin/bash
user1:x:1001:1001::/home/user1:/bin/bash
user2:x:1002:1002::/home/user2:/bin/bash
user3:x:1004:1005::/home/user3:/bin/bash
user4:x:1006:1005::/home/aming111:/sbin/nologin
user5:x:1007:1007::/hoooome/user5:/bin/bash
user6:x:1008:1010::/hooome/user6:/bin/bash
saslauth:x:996:76:Saslauthd user:/run/saslauthd:/sbin/nologin
[root@aminglinux-01 sed]# 
```
- 删掉前面25行,它这个删除并没有 真正把文件内容删除掉,sed ''d 仅仅是在屏幕当中 把剩下的行给列出来
```
[root@aminglinux-01 sed]# sed '1,25'd test.txt
user2:x:1002:1002::/home/user2:/bin/bash
user3:x:1004:1005::/home/user3:/bin/bash
user4:x:1006:1005::/home/aming111:/sbin/nologin
user5:x:1007:1007::/hoooome/user5:/bin/bash
user6:x:1008:1010::/hooome/user6:/bin/bash
saslauth:x:996:76:Saslauthd user:/run/saslauthd:/sbin/nologin
[root@aminglinux-01 sed]# 
[root@aminglinux-01 sed]# wc -l test.txt
31 test.txt
[root@aminglinux-01 sed]# 

```

-  先把文件test.txt拷贝下 拷贝成test.txt.bak   
-  sed -i 是删除文件内容     sed -i '1,25'd test.txt  
```
[root@aminglinux-01 sed]# wc -l test.txt
31 test.txt
[root@aminglinux-01 sed]# cp test.txt test.txt.bak  

[root@aminglinux-01 sed]# sed -i '1,25'd test.txt
[root@aminglinux-01 sed]# wc -l test.txt
6 test.txt
[root@aminglinux-01 sed]# 
```

- 也可以加入正则表达式,把user2 相关的删掉 sed -i '/user2/'d test.txt
```
[root@aminglinux-01 sed]# sed -i '/user2/'d test.txt
[root@aminglinux-01 sed]# cat test.txt
user3:x:1004:1005::/home/user3:/bin/bash
user4:x:1006:1005::/home/aming111:/sbin/nologin
user5:x:1007:1007::/hoooome/user5:/bin/bash
user6:x:1008:1010::/hooome/user6:/bin/bash
saslauth:x:996:76:Saslauthd user:/run/saslauthd:/sbin/nologin
[root@aminglinux-01 sed]# 
```

- [ ] 打印p,删除d


- 再把test.txt 拷贝回来
```
[root@aminglinux-01 sed]# cp test.txt.bak test.txt
cp:是否覆盖"test.txt"? y
[root@aminglinux-01 sed]# 
```
- 替换 把test.txt 里面的前面10行的 root 替换为 toor ,    sed '1,10s/root/toor/g' test.txt
```
[root@aminglinux-01 sed]# sed '1,10s/root/toor/g' test.txt
toor:x:0:0:toor:/toor:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
dskdklldkdddkdkrao:222
daemon:x:2:2:daemon:/sbin:/sbin/NOLOGIN
222222:r.o:ldkdkdkdBUs
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:1o1:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/no1ologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:998:996:User for polkitd:/:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
chrony:x:997:995::/var/lib/chrony:/sbin/nologin
aming:x:1000:1005::/home/aming:/bin/bash
user1:x:1001:1001::/home/user1:/bin/bash
user2:x:1002:1002::/home/user2:/bin/bash
user3:x:1004:1005::/home/user3:/bin/bash
user4:x:1006:1005::/home/aming111:/sbin/nologin
user5:x:1007:1007::/hoooome/user5:/bin/bash
user6:x:1008:1010::/hooome/user6:/bin/bash
saslauth:x:996:76:Saslauthd user:/run/saslauthd:/sbin/nologin
[root@aminglinux-01 sed]# 
```

- sed也支持正则表达式 把ro+ 替换成 r     sed -r '1,10s/ro+/r/g' test.txt |head
```
[root@aminglinux-01 sed]# sed '1,10s/ro+/r/g' test.txt |head
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
dskdklldkdddkdkrao:222
daemon:x:2:2:daemon:/sbin:/sbin/NOLOGIN
222222:r.o:ldkdkdkdBUs
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
[root@aminglinux-01 sed]# 

不成功?添加正则表达式 + 需要 sed -r

[root@aminglinux-01 sed]# sed -r '1,10s/ro+/r/g' test.txt |head
rt:x:0:0:rt:/rt:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
dskdklldkdddkdkrao:222
daemon:x:2:2:daemon:/sbin:/sbin/NOLOGIN
222222:r.o:ldkdkdkdBUs
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
[root@aminglinux-01 sed]# 
```
- 针对test.txt前10行 做个替换
```
[root@aminglinux-01 sed]# head test.txt
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
dskdklldkdddkdkrao:222
daemon:x:2:2:daemon:/sbin:/sbin/NOLOGIN
222222:r.o:ldkdkdkdBUs
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
```
- 把前10行 的 开头的 和 结尾替换位置 sed -r 's/字符/'\字符\'
- [ ] s是指的所有行, 第一行是非冒号[^:]+  表示只要是非冒号的字符 1个或 多个
- [ ] 第二个(.*)表示所有
- [ ] 后面的[^:]+ 表示非冒号的 字符  1个或多个
- [ ] 前面用了小括号() 后面就要用反斜杠\1\2\3
- [ ] 原来是\1:\2:\3/'  现在把最前面1 和最后面3替换   就是\3:\2:\1/'
```
[root@aminglinux-01 sed]# head test.txt |sed -r 's/([^:]+):(.*):([^:]+)/\3:\2:\1/'
/bin/bash:x:0:0:root:/root:root
/sbin/nologin:x:1:1:bin:/bin:bin
dskdklldkdddkdkrao:222
/sbin/NOLOGIN:x:2:2:daemon:/sbin:daemon
ldkdkdkdBUs:r.o:222222
/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
[root@aminglinux-01 sed]# 
```
- 把test.txt的前面10行 里的 /root换成 123
```
[root@aminglinux-01 sed]# head test.txt |sed 's//root/123/g'
sed:-e 表达式 #1,字符 12:“s”的未知选项
[root@aminglinux-01 sed]# head test.txt |sed 's/\/root/123/g'
root:x:0:0:root:123:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
dskdklldkdddkdkrao:222
daemon:x:2:2:daemon:/sbin:/sbin/NOLOGIN
222222:r.o:ldkdkdkdBUs
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
[root@aminglinux-01 sed]# 

```


-把 /sbin/nologin/ 换成123  要么用脱义 \ 要么用@代替
```
[root@aminglinux-01 sed]# head test.txt |sed 's//sbin/nolgin/123/g'
sed:-e 表达式 #1,字符 9:“s”的未知选项
[root@aminglinux-01 sed]# head test.txt |sed 's/\/sbin\/nolgin/123/g'
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
dskdklldkdddkdkrao:222
daemon:x:2:2:daemon:/sbin:/sbin/NOLOGIN
222222:r.o:ldkdkdkdBUs
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt

[root@aminglinux-01 sed]# head test.txt |sed 's@/sbin/nolgin@123@g'
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
dskdklldkdddkdkrao:222
daemon:x:2:2:daemon:/sbin:/sbin/NOLOGIN
222222:r.o:ldkdkdkdBUs
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
[root@aminglinux-01 sed]# 
```

- 把前面10行 全部字母替换成 数字
```
[root@aminglinux-01 sed]# head test.txt |sed 's/[a-zA-Z]//g'
::0:0::/://
::1:1::/://
:222
::2:2::/://
222222:.:
::3:4:://://
::4:7::///://
::5:0::/://
::6:0::/://
::7:0::/://
[root@aminglinux-01 sed]# 
```

-先看下前10行
```
[root@aminglinux-01 sed]# head test.txt
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
dskdklldkdddkdkrao:222
daemon:x:2:2:daemon:/sbin:/sbin/NOLOGIN
222222:r.o:ldkdkdkdBUs
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
[root@aminglinux-01 sed]# 
```
- 需要把前10行 所有行的前面加上字符串比如 加上 aaa:
- (.*) 表示所有的字符 替换为  aaa:\1    
- 可以用 /(.*)/\aaa:\1/   或者也可以使用/(.*)/aaa:&/
``` 
[root@aminglinux-01 sed]# head test.txt |sed -r 's/(.*)/aaa:&/'
aaa:root:x:0:0:root:/root:/bin/bash
aaa:bin:x:1:1:bin:/bin:/sbin/nologin
aaa:dskdklldkdddkdkrao:222
aaa:daemon:x:2:2:daemon:/sbin:/sbin/NOLOGIN
aaa:222222:r.o:ldkdkdkdBUs
aaa:adm:x:3:4:adm:/var/adm:/sbin/nologin
aaa:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
aaa:sync:x:5:0:sync:/sbin:/bin/sync
aaa:shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
aaa:halt:x:7:0:halt:/sbin:/sbin/halt
[root@aminglinux-01 sed]# 
```

- [x] grep sed awk 这三个要反复的练习才能熟练