当前位置:   article > 正文

shell编程(四)| sed 正则表达式_sed 多个空格

sed 多个空格

sed

一,sed概述

sed行编辑器
stream editor
用来操作纯 ASCII 码的文本
处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),可以指定仅仅处理哪些行
sed处理完成之后把缓冲区的内容送往屏幕,接着处理下一行,这样不断重复, 直到文件末尾
sed符合条件的处理,不符合条件的不予处理,文件内容并没有 改变,除非用重定向存储输出
二,调用 sed 命令有两种形式:
sed [options] 'command' file(s)
sed [options] -f scriptfile file(s)

三,多种操作模式

p 显示   d 删除    a 添加   c 替换   w 写入    i 插入

1,p 模式操作

-n 只列出结果sed特殊处理的那一行,不显示原来那一行

-e 多重编辑

sed -n '/^#/p' fstab     表示显示以#开头的行

sed -n '/^#/!p' fstab     表示以#开头的行不显示

sed -n '/0$/!p' fstab      表示以0结尾的行不显示

sed -n '/0$/p' fstab       表示显示以0结尾结尾的行


[html] view plain copy
  1. [root@100 mnt]# cat -n fstab   
  2.      1    
  3.      2  #  
  4.      3  # /etc/fstab  
  5.      4  # Created by anaconda on Wed May  7 01:22:57 2014  
  6.      5  #  
  7.      6  UUID=9bf6b9f7-92ad-441b-848e-0257cbb883d1 /                       xfs     defaults        1 1  
  8.      7  /dev/sda /iscsidisk xfs defaults,_netdev 0 0  
  9. [root@100 mnt]# cat -n fstab | sed -n '2,6p'                       >>>>>>>>显示第2到6行  
  10.      2  #  
  11.      3  # /etc/fstab  
  12.      4  # Created by anaconda on Wed May  7 01:22:57 2014  
  13.      5  #  
  14.      6  UUID=9bf6b9f7-92ad-441b-848e-0257cbb883d1 /                       xfs     defaults        1 1  
  15. [root@100 mnt]# cat -n fstab | sed -n -e '2p' -e '6p'             >>>>>>>>显示第2和第6行  
  16.      2  #  
  17.      6  UUID=9bf6b9f7-92ad-441b-848e-0257cbb883d1 /                       xfs     defaults        1 1  
  18. [root@100 mnt]# cat -n fstab | sed -n -e '2p;6p'                  >>>>>>>>显示第2和第6行   这里把上一条合并了  
  19.      2  #  
  20.      6  UUID=9bf6b9f7-92ad-441b-848e-0257cbb883d1 /                       xfs     defaults        1 1  
  21. [root@100 mnt]# cat -n fstab | sed -n '2p;6p'                     >>>>>>>显示第2和第6行  
  22.      2  #  
  23.      6  UUID=9bf6b9f7-92ad-441b-848e-0257cbb883d1 /                       xfs     defaults        1 1  

sed -n -e '2!p'  fstab    表示第二行不显示

sed -n -e '2,5!p'  fstab  表示第2到5行不现实

[html] view plain copy
  1. [root@100 mnt]# cat -n fstab | sed -n -e '2!p'  
  2.      1    
  3.      3  # /etc/fstab  
  4.      4  # Created by anaconda on Wed May  7 01:22:57 2014  
  5.      5  #  
  6.      6  UUID=9bf6b9f7-92ad-441b-848e-0257cbb883d1 /                       xfs     defaults        1 1  
  7.      7  /dev/sda /iscsidisk xfs defaults,_netdev 0 0  
  8. [root@100 mnt]# cat -n fstab | sed -n -e '2,5!p'  
  9.      1    
  10.      6  UUID=9bf6b9f7-92ad-441b-848e-0257cbb883d1 /                       xfs     defaults        1 1  
  11.      7  /dev/sda /iscsidisk xfs defaults,_netdev 0 0  

sed -n -e '2!p;6!p' | uniq -d  fstab   表示第2,6行不显示

sed -n -e  '2!p;6!p' uniq -u  fstab     表示只显示第2,6行

[html] view plain copy
  1. [root@100 mnt]# cat -n fstab | sed -n -e '2!p;6!p'                  >>>>>会有重复的,但是第2行和第6行没有重复  
  2.      1    
  3.      1    
  4.      2  #  
  5.      3  # /etc/fstab  
  6.      3  # /etc/fstab  
  7.      4  # Created by anaconda on Wed May  7 01:22:57 2014  
  8.      4  # Created by anaconda on Wed May  7 01:22:57 2014  
  9.      5  #  
  10.      5  #  
  11.      6  UUID=9bf6b9f7-92ad-441b-848e-0257cbb883d1 /                       xfs     defaults        1 1  
  12.      7  /dev/sda /iscsidisk xfs defaults,_netdev 0 0  
  13.      7  /dev/sda /iscsidisk xfs defaults,_netdev 0 0  
  14. [root@100 mnt]# cat -n fstab | sed -n -e '2!p;6!p' | uniq -d        >>>>>>uniq -d表示显示重复的行 -d=--repeated  
  15.      1    
  16.      3  # /etc/fstab  
  17.      4  # Created by anaconda on Wed May  7 01:22:57 2014  
  18.      5  #  
  19.      7  /dev/sda /iscsidisk xfs defaults,_netdev 0 0  
  20. [root@100 mnt]# cat -n fstab | sed -n -e '2!p;6!p' | uniq -u        >>>>>>uniq -u表示显示不重复的行 -u=--unique  
  21.      2  #  
  22.      6  UUID=9bf6b9f7-92ad-441b-848e-0257cbb883d1 /                       xfs     defaults        1 1  

练习

给定userfile和passfile,批量创建用户

[html] view plain copy
  1. [root@100 mnt]# cat userfile   
  2. user1  
  3. user2  
  4. user3  
  5. [root@100 mnt]# cat passwdfile   
  6. user1123  
  7. user2123  
  8. user3123  
  9. [root@100 mnt]# cat user.sh   
  10. #################################  
  11. # Author:           Minz        #  
  12. # Version:                      #  
  13. # Mail:           zmxxx@163.com #  
  14. # Date:        2018-06-19       #  
  15. # Description                   #  
  16. #                               #  
  17. #################################  
  18.   
  19. #!/bin/bas  
  20. NUM=$( echo `wc -l userfile` | cut -d " " -f 1 )  >>>>确定用户数  
  21. for i in `seq 1 $NUM `                            >>>>seq 从1开始递增  
  22. do  
  23.     USERNAME=`sed -n "${i}p" userfile`  
  24.     PASSWORD=`sed -n "${i}p" passwdfile`  
  25.     useradd $USERNAME  
  26.     echo $PASSWORD | passwd --stdin  $USERNAME  
  27. done  
  28.   
  29. 测试  
  30. [root@100 mnt]# sh user.sh   
  31. Changing password for user user1.  
  32. passwd: all authentication tokens updated successfully.  
  33. Changing password for user user2.  
  34. passwd: all authentication tokens updated successfully.  
  35. Changing password for user user3.  
  36. passwd: all authentication tokens updated successfully.  

2,d模式

sed -e '2d;6d' fstab   表示第2行,第6行删除

sed -e '2,6d' fstab     表示第2到6行删除

sed -e '/^#/d' fstab   表示删除以#开头的行

sed -e '/^$/d;/^#/d' fstab   表示删除空行并且以#开头的行     ^$表示首尾相连,也就是空行

sed -e '/UUID/d' fstab   表示删除含有UUID的行

sed -e '/UUID/!d' fstab  表示不删除含有UUID的行,也就是只显示含有UUID的行

4,a模式

sed '/hello/aword' westos 表示把word加在含有hello后一行  默认是在后面一行追加

sed 's/hello/hello world/g' westos  表示把含有hello的行替换为hello world  ,这里g是全文替换,注意前面有s

sed '/hello/aworld westos' westos  表示在含有hello后面一行追加world westos,其中world westos在一行

sed '/hello/aworld\nwestos' westos  表示在含有hello 后面一行追加 world westos,但是有\n表示换行


5,i模式

sed '/hello/iworld\nwestos' westos  表示在含有hello行的前面插入world westos,\n表示换行

6,c模式

sed '/hello/chello world' westos     表示把含有hello的行替换为hello

sed '/hello/cwestos\nworld' westos   表示把含有hello的行替换为westos world,\n表示换行


7,w模式

前面的模式默认是不会改变文件的内容的

sed -n '/bash$/p' passwd > file     重定向写入文件

sed -n '/bash$/wfile' passwd         在w模式下,可以直接写入文件,这是追加的过程,不会覆盖原文

四,sed其他常用命令

sed命令
a\\ 在当前行下面插入文本。
i\\ 在当前行上面插入文本。
c\\ 把选定的行改为新的文本。
d 删除,删除选择的行。
D 删除模板块的第一行。
s 替换指定字符
h 拷贝模板块的内容到内存中的缓冲区。
H 追加模板块的内容到内存中的缓冲区。
g 获得内存缓冲区的内容,并替代当前模板块中的文本。
G 获得内存缓冲区的内容,并追加到当前模板块文本的后面。
l 列表不能打印字符的清单。
n 读取下一个输入行,用下一个命令处理新的行而不是用第一个命令。
N 追加下一个输入行到模板块后面并在二者间嵌入一个新行,改变当前行号码。
p 打印模板块的行。
P(大写) 打印模板块的第一行。
q 退出Sed。
b lable 分支到脚本中带有标记的地方,如果分支不存在则分支到脚本的末尾。
r file 从file中读行。
t label if分支,从最后一行开始,条件一旦满足或者T,t命令,将导致分支到带有标号的命令处,或者到脚本的末尾。
T label 错误分支,从最后一行开始,一旦发生错误或者T,t命令,将导致分支到带有标号的命令处,或者到脚本的末尾。
w file 写并追加模板块到file末尾。
W file 写并追加模板块的第一行到file末尾。
! 表示后面的命令对所有没有被选定的行发生作用。
= 打印当前行号码。
# 把注释扩展到下一个换行符以前。

sed替换标记
g 表示行内全面替换。
p 表示打印行。
w 表示把行写入一个文件。
x 表示互换模板块中的文本和缓冲区中的文本。
y 表示把一个字符翻译为另外的字符(但是不用于正则表达式
\\1 子串匹配标记
& 已匹配字符串标记

sed元字符集
^ 匹配行开始,如:/^sed/匹配所有以sed开头的行。
$ 匹配行结束,如:/sed$/匹配所有以sed结尾的行。
. 匹配一个非换行符的任意字符,如:/s.d/匹配s后接一个任意字符,最后是d。
* 匹配0个或多个字符,如:/*sed/匹配所有模板是一个或多个空格后紧跟sed的行。
[] 匹配一个指定范围内的字符,如/[ss]ed/匹配sed和Sed。
[^] 匹配一个不在指定范围内的字符,如:/[^A-RT-Z]ed/匹配不包含A-R和T-Z的一个字母开头,紧跟ed的行。
\\(..\\) 匹配子串,保存匹配的字符,如s/\\(love\\)able/\\1rs,loveable被替换成lovers。
& 保存搜索字符用来替换其他字符,如s/love/**&**/,love这成**love**。
\\< 匹配单词的开始,如:/\\\\> 匹配单词的结束,如/love\\>/匹配包含以love结尾的单词的行。
x\\{m\\} 重复字符x,m次,如:/0\\{5\\}/匹配包含5个0的行。
x\\{m,\\} 重复字符x,至少m次,如:/0\\{5,\\}/匹配至少有5个0的行。
x\\{m,n\\} 重复字符x,至少m次,不多于n次,如:/0\\{5,10\\}/匹配5~10个0的行。


  1. [root@100 mnt]# cat westos
  2. hello
  3. [root@100 mnt]# sed '/hello/=' westos 显示包含hello的行并且输出行号
  4. 1
  5. hello
  6. [root@100 mnt]# sed -n '/hello/=' westos 只显示包含hello的行号
  1. [root@100 mnt]# cat westos
  2. hello
  3. [root@100 mnt]# sed '/hello/=' -i westos -i表示插入文本,插入位置在包行hello的行的上面一行
  4. [root@100 mnt]# cat westos
  5. 1
  6. hello
  1. [root@100 mnt]# cat westos
  2. hello
  3. [root@100 mnt]# sed '/hello/=' westos
  4. 1
  5. hello
  6. [root@100 mnt]# echo `sed '/hello/=' westos` echo 把原来两行的变成了一行的内容
  7. 1 hello
  1. [root@100 mnt]# cat westos
  2. hello
  3. world
  4. [root@100 mnt]# sed '=' westos 打印每一行的行号,并且显示在该行的上面
  5. 1
  6. hello
  7. 2
  8. world
  9. [root@100 mnt]# echo `sed '=' westos` 多行变一行
  10. 1 hello 2 world
  1. [root@100 mnt]# cat westos
  2. ##############################################
  3. [root@100 mnt]# sed '2r westos' fstab 表示把westos中的内容写在fstab的第2行之后
  4. #
  5. ##############################################
  6. # /etc/fstab
  7. # Created by anaconda on Wed May 7 01:22:57 2014
  8. #
  9. # Accessible filesystems, by reference, are maintained under '/dev/disk'
  10. # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
  11. #
  12. UUID=9bf6b9f7-92ad-441b-848e-0257cbb883d1 / xfs defaults 1 1
  13. [root@100 mnt]# sed '$r westos' fstab 表示把westos中的内容写在fstab的尾行之后
  14. #
  15. # /etc/fstab
  16. # Created by anaconda on Wed May 7 01:22:57 2014
  17. #
  18. # Accessible filesystems, by reference, are maintained under '/dev/disk'
  19. # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
  20. #
  21. UUID=9bf6b9f7-92ad-441b-848e-0257cbb883d1 / xfs defaults 1 1
  22. ##############################################
  1. [root@100 mnt]# sed -n '/^UUID/=' fstab 不显示原来内容,把以UUID开头的行号显示出来
  2. 9
  3. [root@100 mnt]# sed '/^UUID/=' fstab 显示原来内容,把以UUID开头的行号显示出来,默认行号在搜索内容的上一行显示
  4. #
  5. # /etc/fstab
  6. # Created by anaconda on Wed May 7 01:22:57 2014
  7. #
  8. # Accessible filesystems, by reference, are maintained under '/dev/disk'
  9. # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
  10. #
  11. 9
  12. UUID=9bf6b9f7-92ad-441b-848e-0257cbb883d1 / xfs defaults 1 1
  1. [root@100 mnt]# sed -n -e '/^UUID/p' fstab
  2. UUID=9bf6b9f7-92ad-441b-848e-0257cbb883d1 / xfs defaults 1 1
  3. [root@100 mnt]# sed -n -e '/^UUID/p' -n -e '/^UUID/=' fstab 既显示搜索行,也显示行号 -e 表示扩展
  4. UUID=9bf6b9f7-92ad-441b-848e-0257cbb883d1 / xfs defaults 1 1
  5. 9
  6. [root@100 mnt]# sed -n -e '/^UUID/p;/^UUID/=' fstab 可以合并
  7. UUID=9bf6b9f7-92ad-441b-848e-0257cbb883d1 / xfs defaults 1 1
  8. 9
  1. [root@100 mnt]# sed '=' fstab 在所有行的前面一行添加行号
  2. 1
  3. 2
  4. #
  5. 3
  6. # /etc/fstab
  7. 4
  8. # Created by anaconda on Wed May 7 01:22:57 2014
  9. 5
  10. #
  11. 6
  12. # Accessible filesystems, by reference, are maintained under '/dev/disk'
  13. 7
  14. # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
  15. 8
  16. #
  17. 9
  18. UUID=9bf6b9f7-92ad-441b-848e-0257cbb883d1 / xfs defaults 1 1
  19. 10
  20. /dev/sda /iscsidisk xfs defaults,_netdev 0 0
  1. [root@100 mnt]# sed '=' fstab | sed 'N;s/\n//g' 给每一行行首添加行号 s表示替换
  2. 1
  3. 2#
  4. 3# /etc/fstab
  5. 4# Created by anaconda on Wed May 7 01:22:57 2014
  6. 5#
  7. 6# Accessible filesystems, by reference, are maintained under '/dev/disk'
  8. 7# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
  9. 8#
  10. 9UUID=9bf6b9f7-92ad-441b-848e-0257cbb883d1 / xfs defaults 1 1
  11. 10/dev/sda /iscsidisk xfs defaults,_netdev 0 0
  1. [root@100 mnt]# sed '=' fstab | sed 'N;s/\n/ /g' 给每一行行首添加行号和空格
  2. 1
  3. 2 #
  4. 3 # /etc/fstab
  5. 4 # Created by anaconda on Wed May 7 01:22:57 2014
  6. 5 #
  7. 6 # Accessible filesystems, by reference, are maintained under '/dev/disk'
  8. 7 # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
  9. 8 #
  10. 9 UUID=9bf6b9f7-92ad-441b-848e-0257cbb883d1 / xfs defaults 1 1
  11. 10 /dev/sda /iscsidisk xfs defaults,_netdev 0 0
  1. [root@100 mnt]# cat fstab
  2. # Created by anaconda on Wed May 7 01:22:57 2014
  3. # Accessible filesystems, by reference, are maintained under '/dev/disk'
  4. UUID=9bf6b9f7-92ad-441b-848e-0257cbb883d1 / xfs defaults 1 1
  5. /dev/sda /iscsidisk xfs defaults,_netdev 0 0
  6. [root@100 mnt]# sed 'G' fstab 每一行后面添加空行
  7. # Created by anaconda on Wed May 7 01:22:57 2014
  8. # Accessible filesystems, by reference, are maintained under '/dev/disk'
  9. UUID=9bf6b9f7-92ad-441b-848e-0257cbb883d1 / xfs defaults 1 1
  10. /dev/sda /iscsidisk xfs defaults,_netdev 0 0
  11. [root@100 mnt]# sed '$!G' fstab 除了最后一行外,每一行后面添加空行
  12. # Created by anaconda on Wed May 7 01:22:57 2014
  13. # Accessible filesystems, by reference, are maintained under '/dev/disk'
  14. UUID=9bf6b9f7-92ad-441b-848e-0257cbb883d1 / xfs defaults 1 1
  15. /dev/sda /iscsidisk xfs defaults,_netdev 0 0
  1. [root@100 mnt]# cat fstab
  2. # Created by anaconda on Wed May 7 01:22:57 2014
  3. # Accessible filesystems, by reference, are maintained under '/dev/disk'
  4. UUID=9bf6b9f7-92ad-441b-848e-0257cbb883d1 / xfs defaults 1 1
  5. /dev/sda /iscsidisk xfs defaults,_netdev 0 0
  6. [root@100 mnt]# sed -n '2p' fstab 打印第2行的内容
  7. # Accessible filesystems, by reference, are maintained under '/dev/disk'
  8. [root@100 mnt]# sed -n '$p' fstab 打印最后一行的内容
  9. /dev/sda /iscsidisk xfs defaults,_netdev 0 0


全文替换命令

注意:sed的c模式也可以进行替换,c模式的替换是对关键字的整行进行替换,但是s参数是只对关键字进行替换

  1. [root@147 mnt]# cat passwd
  2. root:x:0:0:root:/root:/bin/bash
  3. bin:x:1:1:bin:/bin:/sbin/nologin
  4. daemon:x:2:2:daemon:/sbin:/sbin/nologin
  5. adm:x:3:4:adm:/var/adm:/sbin/nologin
  6. lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
  7. sync:x:5:0:sync:/sbin:/bin/sync
  8. shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
  9. halt:x:7:0:halt:/sbin:/sbin/halt
  10. mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
  11. operator:x:11:0:operator:/root:/sbin/nologin
  12. games:x:12:100:games:/usr/games:/sbin/nologin
  13. ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
  14. nobody:x:99:99:Nobody:/:/sbin/nologin
  15. gnome-initial-setup:x:993:991::/run/gnome-initial-setup/:/sbin/nologin
  16. tcpdump:x:72:72::/:/sbin/nologin
  17. p:x:1001:1001::/home/p:/bin/bash
  18. user1:x:1002:1002::/home/user1:/bin/bash
  19. user2:x:1003:1003::/home/user2:/bin/bash
  20. user3:x:1004:1004::/home/user3:/bin/bash
  21. [root@147 mnt]# sed 's/nologin/westos/g' passwd                    >>>>>s表示替换,g表示全文的  把nologin全文替换为westos
  22. root:x:0:0:root:/root:/bin/bash
  23. bin:x:1:1:bin:/bin:/sbin/westos
  24. daemon:x:2:2:daemon:/sbin:/sbin/westos
  25. adm:x:3:4:adm:/var/adm:/sbin/westos
  26. lp:x:4:7:lp:/var/spool/lpd:/sbin/westos
  27. sync:x:5:0:sync:/sbin:/bin/sync
  28. shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
  29. halt:x:7:0:halt:/sbin:/sbin/halt
  30. mail:x:8:12:mail:/var/spool/mail:/sbin/westos
  31. operator:x:11:0:operator:/root:/sbin/westos
  32. games:x:12:100:games:/usr/games:/sbin/westos
  33. ftp:x:14:50:FTP User:/var/ftp:/sbin/westos
  34. nobody:x:99:99:Nobody:/:/sbin/westos
  35. gnome-initial-setup:x:993:991::/run/gnome-initial-setup/:/sbin/westos
  36. tcpdump:x:72:72::/:/sbin/westos
  37. p:x:1001:1001::/home/p:/bin/bash
  38. user1:x:1002:1002::/home/user1:/bin/bash
  39. user2:x:1003:1003::/home/user2:/bin/bash
  40. user3:x:1004:1004::/home/user3:/bin/bash
  41. [root@147 mnt]# sed '3,5s/nologin/westos/g' passwd               >>>>>>全文替换替换3到5行的nologin为westos
  42. root:x:0:0:root:/root:/bin/bash
  43. bin:x:1:1:bin:/bin:/sbin/nologin
  44. daemon:x:2:2:daemon:/sbin:/sbin/westos
  45. adm:x:3:4:adm:/var/adm:/sbin/westos
  46. lp:x:4:7:lp:/var/spool/lpd:/sbin/westos
  47. sync:x:5:0:sync:/sbin:/bin/sync
  48. shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
  49. halt:x:7:0:halt:/sbin:/sbin/halt
  50. mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
  51. operator:x:11:0:operator:/root:/sbin/nologin
  52. games:x:12:100:games:/usr/games:/sbin/nologin
  53. ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
  54. nobody:x:99:99:Nobody:/:/sbin/nologin
  55. gnome-initial-setup:x:993:991::/run/gnome-initial-setup/:/sbin/nologin
  56. tcpdump:x:72:72::/:/sbin/nologin
  57. p:x:1001:1001::/home/p:/bin/bash
  58. user1:x:1002:1002::/home/user1:/bin/bash
  59. user2:x:1003:1003::/home/user2:/bin/bash
  60. user3:x:1004:1004::/home/user3:/bin/bash
  1. [root@147 mnt]# sed -e '/adm/,/sync/s/nologin/westos/g' passwd            >>>>>从包含adm到包行sync的行里面,全文替换nologin为westos
  2. root:x:0:0:root:/root:/bin/bash
  3. bin:x:1:1:bin:/bin:/sbin/nologin
  4. daemon:x:2:2:daemon:/sbin:/sbin/nologin
  5. adm:x:3:4:adm:/var/adm:/sbin/westos
  6. lp:x:4:7:lp:/var/spool/lpd:/sbin/westos
  7. sync:x:5:0:sync:/sbin:/bin/sync
  8. shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
  9. halt:x:7:0:halt:/sbin:/sbin/halt
  10. mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
  11. operator:x:11:0:operator:/root:/sbin/nologin
  12. games:x:12:100:games:/usr/games:/sbin/nologin
  13. ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
  14. nobody:x:99:99:Nobody:/:/sbin/nologin
  15. gnome-initial-setup:x:993:991::/run/gnome-initial-setup/:/sbin/nologin
  16. tcpdump:x:72:72::/:/sbin/nologin
  17. p:x:1001:1001::/home/p:/bin/bash
  18. user1:x:1002:1002::/home/user1:/bin/bash
  19. user2:x:1003:1003::/home/user2:/bin/bash
  20. user3:x:1004:1004::/home/user3:/bin/bash
  21. [root@147 mnt]# sed -e '/adm/,/sync/s/nologin/westos/g;s/sbin/lee/g' passwd >>>>从包含adm到包行sync的行里面,全文替换nologin为westos,全文替换sbin为lee ;表示衔接多个操作
  22. root:x:0:0:root:/root:/bin/bash
  23. bin:x:1:1:bin:/bin:/lee/nologin
  24. daemon:x:2:2:daemon:/lee:/lee/nologin
  25. adm:x:3:4:adm:/var/adm:/lee/westos
  26. lp:x:4:7:lp:/var/spool/lpd:/lee/westos
  27. sync:x:5:0:sync:/lee:/bin/sync
  28. shutdown:x:6:0:shutdown:/lee:/lee/shutdown
  29. halt:x:7:0:halt:/lee:/lee/halt
  30. mail:x:8:12:mail:/var/spool/mail:/lee/nologin
  31. operator:x:11:0:operator:/root:/lee/nologin
  32. games:x:12:100:games:/usr/games:/lee/nologin
  33. ftp:x:14:50:FTP User:/var/ftp:/lee/nologin
  34. nobody:x:99:99:Nobody:/:/lee/nologin
  35. gnome-initial-setup:x:993:991::/run/gnome-initial-setup/:/lee/nologin
  36. tcpdump:x:72:72::/:/lee/nologin
  37. p:x:1001:1001::/home/p:/bin/bash
  38. user1:x:1002:1002::/home/user1:/bin/bash
  39. user2:x:1003:1003::/home/user2:/bin/bash
  40. user3:x:1004:1004::/home/user3:/bin/bash
  1. [root@147 mnt]# vim file
  2. [root@147 mnt]# cat file >>>>>把命令写在文件里面
  3. s/sbin/westos/g
  4. s/nologin/linux/g
  5. [root@147 mnt]# sed -f file passwd      >>>>>-f后面指定命令文件
  6. root:x:0:0:root:/root:/bin/bash
  7. bin:x:1:1:bin:/bin:/westos/linux
  8. daemon:x:2:2:daemon:/westos:/westos/linux
  9. adm:x:3:4:adm:/var/adm:/westos/linux
  10. lp:x:4:7:lp:/var/spool/lpd:/westos/linux
  11. sync:x:5:0:sync:/westos:/bin/sync
  12. shutdown:x:6:0:shutdown:/westos:/westos/shutdown
  13. halt:x:7:0:halt:/westos:/westos/halt
  14. mail:x:8:12:mail:/var/spool/mail:/westos/linux
  15. operator:x:11:0:operator:/root:/westos/linux
  16. games:x:12:100:games:/usr/games:/westos/linux
  17. ftp:x:14:50:FTP User:/var/ftp:/westos/linux
  18. nobody:x:99:99:Nobody:/:/westos/linux
  19. gnome-initial-setup:x:993:991::/run/gnome-initial-setup/:/westos/linux
  20. tcpdump:x:72:72::/:/westos/linux
  21. p:x:1001:1001::/home/p:/bin/bash
  22. user1:x:1002:1002::/home/user1:/bin/bash
  23. user2:x:1003:1003::/home/user2:/bin/bash
  24. user3:x:1004:1004::/home/user3:/bin/bash
  25. [root@147 mnt]# cat passwd                >>>>>注意sed的操作是不会改变源文件的内容的
  26. root:x:0:0:root:/root:/bin/bash
  27. bin:x:1:1:bin:/bin:/sbin/nologin
  28. daemon:x:2:2:daemon:/sbin:/sbin/nologin
  29. adm:x:3:4:adm:/var/adm:/sbin/nologin
  30. lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
  31. sync:x:5:0:sync:/sbin:/bin/sync
  32. shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
  33. halt:x:7:0:halt:/sbin:/sbin/halt
  34. mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
  35. operator:x:11:0:operator:/root:/sbin/nologin
  36. games:x:12:100:games:/usr/games:/sbin/nologin
  37. ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
  38. nobody:x:99:99:Nobody:/:/sbin/nologin
  39. gnome-initial-setup:x:993:991::/run/gnome-initial-setup/:/sbin/nologin
  40. tcpdump:x:72:72::/:/sbin/nologin
  41. p:x:1001:1001::/home/p:/bin/bash
  42. user1:x:1002:1002::/home/user1:/bin/bash
  43. user2:x:1003:1003::/home/user2:/bin/bash
  44. user3:x:1004:1004::/home/user3:/bin/bash
  1. [root@147 mnt]# sed -f file -i passwd          >>>>>-i输入到passwd文件,保存起来
  2. [root@147 mnt]# cat passwd                              >>>>>此时查看源文件也被修改了
  3. root:x:0:0:root:/root:/bin/bash
  4. bin:x:1:1:bin:/bin:/westos/linux
  5. daemon:x:2:2:daemon:/westos:/westos/linux
  6. adm:x:3:4:adm:/var/adm:/westos/linux
  7. lp:x:4:7:lp:/var/spool/lpd:/westos/linux
  8. sync:x:5:0:sync:/westos:/bin/sync
  9. shutdown:x:6:0:shutdown:/westos:/westos/shutdown
  10. halt:x:7:0:halt:/westos:/westos/halt
  11. mail:x:8:12:mail:/var/spool/mail:/westos/linux
  12. operator:x:11:0:operator:/root:/westos/linux
  13. games:x:12:100:games:/usr/games:/westos/linux
  14. ftp:x:14:50:FTP User:/var/ftp:/westos/linux
  15. nobody:x:99:99:Nobody:/:/westos/linux
  16. gnome-initial-setup:x:993:991::/run/gnome-initial-setup/:/westos/linux
  17. tcpdump:x:72:72::/:/westos/linux
  18. p:x:1001:1001::/home/p:/bin/bash
  19. user1:x:1002:1002::/home/user1:/bin/bash
  20. user2:x:1003:1003::/home/user2:/bin/bash
  21. user3:x:1004:1004::/home/user3:/bin/bash

五,shell脚本练习

编写脚本,安装httpd服务,修改httpd服务的端口

测试





声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/323000?site
推荐阅读
相关标签
  

闽ICP备14008679号