shell编程(四)| sed 正则表达式

xiaoxiao2021-03-01  73

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 [root@100 mnt]# cat -n fstab        1         2  #       3  # /etc/fstab       4  # Created by anaconda on Wed May  7 01:22:57 2014       5  #       6  UUID=9bf6b9f7-92ad-441b-848e-0257cbb883d1 /                       xfs     defaults        1 1       7  /dev/sda /iscsidisk xfs defaults,_netdev 0 0  [root@100 mnt]# cat -n fstab | sed -n '2,6p'                       >>>>>>>>显示第2到6行       2  #       3  # /etc/fstab       4  # Created by anaconda on Wed May  7 01:22:57 2014       5  #       6  UUID=9bf6b9f7-92ad-441b-848e-0257cbb883d1 /                       xfs     defaults        1 1  [root@100 mnt]# cat -n fstab | sed -n -e '2p' -e '6p'             >>>>>>>>显示第2和第6行       2  #       6  UUID=9bf6b9f7-92ad-441b-848e-0257cbb883d1 /                       xfs     defaults        1 1  [root@100 mnt]# cat -n fstab | sed -n -e '2p;6p'                  >>>>>>>>显示第2和第6行   这里把上一条合并了       2  #       6  UUID=9bf6b9f7-92ad-441b-848e-0257cbb883d1 /                       xfs     defaults        1 1  [root@100 mnt]# cat -n fstab | sed -n '2p;6p'                     >>>>>>>显示第2和第6行       2  #       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 [root@100 mnt]# cat -n fstab | sed -n -e '2!p'       1         3  # /etc/fstab       4  # Created by anaconda on Wed May  7 01:22:57 2014       5  #       6  UUID=9bf6b9f7-92ad-441b-848e-0257cbb883d1 /                       xfs     defaults        1 1       7  /dev/sda /iscsidisk xfs defaults,_netdev 0 0  [root@100 mnt]# cat -n fstab | sed -n -e '2,5!p'       1         6  UUID=9bf6b9f7-92ad-441b-848e-0257cbb883d1 /                       xfs     defaults        1 1       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 [root@100 mnt]# cat -n fstab | sed -n -e '2!p;6!p'                  >>>>>会有重复的,但是第2行和第6行没有重复       1         1         2  #       3  # /etc/fstab       3  # /etc/fstab       4  # Created by anaconda on Wed May  7 01:22:57 2014       4  # Created by anaconda on Wed May  7 01:22:57 2014       5  #       5  #       6  UUID=9bf6b9f7-92ad-441b-848e-0257cbb883d1 /                       xfs     defaults        1 1       7  /dev/sda /iscsidisk xfs defaults,_netdev 0 0       7  /dev/sda /iscsidisk xfs defaults,_netdev 0 0  [root@100 mnt]# cat -n fstab | sed -n -e '2!p;6!p' | uniq -d        >>>>>>uniq -d表示显示重复的行 -d=--repeated       1         3  # /etc/fstab       4  # Created by anaconda on Wed May  7 01:22:57 2014       5  #       7  /dev/sda /iscsidisk xfs defaults,_netdev 0 0  [root@100 mnt]# cat -n fstab | sed -n -e '2!p;6!p' | uniq -u        >>>>>>uniq -u表示显示不重复的行 -u=--unique       2  #       6  UUID=9bf6b9f7-92ad-441b-848e-0257cbb883d1 /                       xfs     defaults        1 1  

练习

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

[html] view plain copy [root@100 mnt]# cat userfile   user1  user2  user3  [root@100 mnt]# cat passwdfile   user1123  user2123  user3123  [root@100 mnt]# cat user.sh   #################################  # Author:           Minz        #  # Version:                      #  # Mail:           zmxxx@163.com #  # Date:        2018-06-19       #  # Description                   #  #                               #  #################################    #!/bin/bas  NUM=$( echo `wc -l userfile` | cut -d " " -f 1 )  >>>>确定用户数  for i in `seq 1 $NUM `                            >>>>seq 从1开始递增  do      USERNAME=`sed -n "${i}p" userfile`      PASSWORD=`sed -n "${i}p" passwdfile`      useradd $USERNAME      echo $PASSWORD | passwd --stdin  $USERNAME  done    测试  [root@100 mnt]# sh user.sh   Changing password for user user1.  passwd: all authentication tokens updated successfully.  Changing password for user user2.  passwd: all authentication tokens updated successfully.  Changing password for user user3.  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的行。

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

全文替换命令

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

[root@147 mnt]# cat passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin 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:11:0:operator:/root:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin nobody:x:99:99:Nobody:/:/sbin/nologin gnome-initial-setup:x:993:991::/run/gnome-initial-setup/:/sbin/nologin tcpdump:x:72:72::/:/sbin/nologin p:x:1001:1001::/home/p:/bin/bash user1:x:1002:1002::/home/user1:/bin/bash user2:x:1003:1003::/home/user2:/bin/bash user3:x:1004:1004::/home/user3:/bin/bash [root@147 mnt]# sed 's/nologin/westos/g' passwd                    >>>>>s表示替换,g表示全文的  把nologin全文替换为westos root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/westos daemon:x:2:2:daemon:/sbin:/sbin/westos adm:x:3:4:adm:/var/adm:/sbin/westos lp:x:4:7:lp:/var/spool/lpd:/sbin/westos 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/westos operator:x:11:0:operator:/root:/sbin/westos games:x:12:100:games:/usr/games:/sbin/westos ftp:x:14:50:FTP User:/var/ftp:/sbin/westos nobody:x:99:99:Nobody:/:/sbin/westos gnome-initial-setup:x:993:991::/run/gnome-initial-setup/:/sbin/westos tcpdump:x:72:72::/:/sbin/westos p:x:1001:1001::/home/p:/bin/bash user1:x:1002:1002::/home/user1:/bin/bash user2:x:1003:1003::/home/user2:/bin/bash user3:x:1004:1004::/home/user3:/bin/bash [root@147 mnt]# sed '3,5s/nologin/westos/g' passwd               >>>>>>全文替换替换3到5行的nologin为westos root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/westos adm:x:3:4:adm:/var/adm:/sbin/westos lp:x:4:7:lp:/var/spool/lpd:/sbin/westos 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:11:0:operator:/root:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin nobody:x:99:99:Nobody:/:/sbin/nologin gnome-initial-setup:x:993:991::/run/gnome-initial-setup/:/sbin/nologin tcpdump:x:72:72::/:/sbin/nologin p:x:1001:1001::/home/p:/bin/bash user1:x:1002:1002::/home/user1:/bin/bash user2:x:1003:1003::/home/user2:/bin/bash user3:x:1004:1004::/home/user3:/bin/bash [root@147 mnt]# sed -e '/adm/,/sync/s/nologin/westos/g' passwd            >>>>>从包含adm到包行sync的行里面,全文替换nologin为westos root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/westos lp:x:4:7:lp:/var/spool/lpd:/sbin/westos 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:11:0:operator:/root:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin nobody:x:99:99:Nobody:/:/sbin/nologin gnome-initial-setup:x:993:991::/run/gnome-initial-setup/:/sbin/nologin tcpdump:x:72:72::/:/sbin/nologin p:x:1001:1001::/home/p:/bin/bash user1:x:1002:1002::/home/user1:/bin/bash user2:x:1003:1003::/home/user2:/bin/bash user3:x:1004:1004::/home/user3:/bin/bash [root@147 mnt]# sed -e '/adm/,/sync/s/nologin/westos/g;s/sbin/lee/g' passwd >>>>从包含adm到包行sync的行里面,全文替换nologin为westos,全文替换sbin为lee ;表示衔接多个操作 root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/lee/nologin daemon:x:2:2:daemon:/lee:/lee/nologin adm:x:3:4:adm:/var/adm:/lee/westos lp:x:4:7:lp:/var/spool/lpd:/lee/westos sync:x:5:0:sync:/lee:/bin/sync shutdown:x:6:0:shutdown:/lee:/lee/shutdown halt:x:7:0:halt:/lee:/lee/halt mail:x:8:12:mail:/var/spool/mail:/lee/nologin operator:x:11:0:operator:/root:/lee/nologin games:x:12:100:games:/usr/games:/lee/nologin ftp:x:14:50:FTP User:/var/ftp:/lee/nologin nobody:x:99:99:Nobody:/:/lee/nologin gnome-initial-setup:x:993:991::/run/gnome-initial-setup/:/lee/nologin tcpdump:x:72:72::/:/lee/nologin p:x:1001:1001::/home/p:/bin/bash user1:x:1002:1002::/home/user1:/bin/bash user2:x:1003:1003::/home/user2:/bin/bash user3:x:1004:1004::/home/user3:/bin/bash [root@147 mnt]# vim file [root@147 mnt]# cat file >>>>>把命令写在文件里面 s/sbin/westos/g s/nologin/linux/g [root@147 mnt]# sed -f file passwd      >>>>>-f后面指定命令文件 root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/westos/linux daemon:x:2:2:daemon:/westos:/westos/linux adm:x:3:4:adm:/var/adm:/westos/linux lp:x:4:7:lp:/var/spool/lpd:/westos/linux sync:x:5:0:sync:/westos:/bin/sync shutdown:x:6:0:shutdown:/westos:/westos/shutdown halt:x:7:0:halt:/westos:/westos/halt mail:x:8:12:mail:/var/spool/mail:/westos/linux operator:x:11:0:operator:/root:/westos/linux games:x:12:100:games:/usr/games:/westos/linux ftp:x:14:50:FTP User:/var/ftp:/westos/linux nobody:x:99:99:Nobody:/:/westos/linux gnome-initial-setup:x:993:991::/run/gnome-initial-setup/:/westos/linux tcpdump:x:72:72::/:/westos/linux p:x:1001:1001::/home/p:/bin/bash user1:x:1002:1002::/home/user1:/bin/bash user2:x:1003:1003::/home/user2:/bin/bash user3:x:1004:1004::/home/user3:/bin/bash [root@147 mnt]# cat passwd                >>>>>注意sed的操作是不会改变源文件的内容的 root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin 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:11:0:operator:/root:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin nobody:x:99:99:Nobody:/:/sbin/nologin gnome-initial-setup:x:993:991::/run/gnome-initial-setup/:/sbin/nologin tcpdump:x:72:72::/:/sbin/nologin p:x:1001:1001::/home/p:/bin/bash user1:x:1002:1002::/home/user1:/bin/bash user2:x:1003:1003::/home/user2:/bin/bash user3:x:1004:1004::/home/user3:/bin/bash [root@147 mnt]# sed -f file -i passwd          >>>>>-i输入到passwd文件,保存起来 [root@147 mnt]# cat passwd                              >>>>>此时查看源文件也被修改了 root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/westos/linux daemon:x:2:2:daemon:/westos:/westos/linux adm:x:3:4:adm:/var/adm:/westos/linux lp:x:4:7:lp:/var/spool/lpd:/westos/linux sync:x:5:0:sync:/westos:/bin/sync shutdown:x:6:0:shutdown:/westos:/westos/shutdown halt:x:7:0:halt:/westos:/westos/halt mail:x:8:12:mail:/var/spool/mail:/westos/linux operator:x:11:0:operator:/root:/westos/linux games:x:12:100:games:/usr/games:/westos/linux ftp:x:14:50:FTP User:/var/ftp:/westos/linux nobody:x:99:99:Nobody:/:/westos/linux gnome-initial-setup:x:993:991::/run/gnome-initial-setup/:/westos/linux tcpdump:x:72:72::/:/westos/linux p:x:1001:1001::/home/p:/bin/bash user1:x:1002:1002::/home/user1:/bin/bash user2:x:1003:1003::/home/user2:/bin/bash user3:x:1004:1004::/home/user3:/bin/bash

五,shell脚本练习

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

测试

转载请注明原文地址: https://www.6miu.com/read-3650133.html

最新回复(0)