马哥教育第十一天十二天学习总结

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了马哥教育第十一天十二天学习总结相关的知识,希望对你有一定的参考价值。

马哥M28第十一天、

  1. sed是一种流编辑器,它一次处理一行内容,处理时把当前处理的行存储在临时缓冲区中,它一次处理一行内容。处理时把当前处理的行存储在临时缓冲区中,称为"模式空间",接着使用sed命令处理缓冲区中的数据,处理完成后,把缓冲区的内容送往终端屏幕,然后读入下一行,执行下一个循环。如果没有使用诸如 “D”的特殊命令,那么会在两个循环之间清空模式空间,但不会清空保留空间。这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出!

sed :必须注意,在搜索处理包含模式的行数据时,模式都是在//内的,即"pattern",通常模式最后都要指定选项,对结果执行一个解释行为,否则sed无法做出解释而报错:-e,expression;

$符在sed中作为文本最后一行的意思进行解释,在正则表达式中作为每行行尾进行解释!


nl filename  == cat -n filename   :显示查询内容的行号以及对应内容!


(小插曲:遇到的系统问题总结:CentOS7开机找不到网卡,网络配置文件被默认修改;原因是networkmanager是7的默认管理工具,默认接管ens33可覆盖配置文件,导致mac地址改变--> nmcli命令工具)


练习:

1、删除centos7系统/etc/grub2.cfg文件中所有以空白开头的行行首的空白字符

2、删除/etc/fstab文件中所有以#开头,后面至少跟一个空白字符的行的行首的#和空白字符

3、在centos6系统/root/install.log每一行行首增加#号

4、在/etc/fstab文件中不以#开头的行的行首增加#号

5、处理/etc/fstab路径,使用sed命令取出其目录名和基名

6、利用sed 取出ifconfig命令中本机的IPv4地址

7、统计centos安装光盘中Package目录下的所有rpm文件的以.分隔倒数第二个字段的重复次数

8、统计/etc/init.d/functions文件中每个单词的出现次数,并排序(用grep和sed两种方法分别实现)

9、将文本文件的n和n+1行合并为一行,n为奇数行

cat /etc/fstab |sed -r 's/^#[[:blank:]]+//g'

3 cat /root/install.log |sed 's/^.*$/#&/g'    开头符就是^  直接可以将开头符替换,所以结束符是$如何在表达式中出现,即所以视为全部替换,所以不加$

4

5 echo  '/etc/fstab' | sed  '[email protected]/.*\@@g'


7、ls -1 |sed -n -r "s/.*\.(.*)、.rpm/\1/gp" |sort |uniq -c |sort -nr

8.cat /etc/init.d/functions |grep -o -w -E "\<[[:alnum:]]+\>" |sort |uniq -c |sort -nr


sed:[基本option + 高级编辑命令]

    sed -n '1p' passwd 只打印第一行  ifconfig eth1 |sed -n 2p

    seq 100 |sed -n '1~2p'步进,只显示奇数行

    seq 100 |sed -n '2~2p'步cat 进,只显示偶数行

    sed -i.orig 's/dog/cat/g' pets 备份源文件为*.orig文件后再替换保存

    sed '2a\dog cat dog cat cat' pets 在第二行后增加新行

    sed '2i\dog cat dog cat cat' pets 在第二行前增加新行

    sed '2c\dog cat dog cat cat' pets 替换第二行

    sed '2w /path/filename' pets 将第二行保存到执行文件

    sed '2r /path/filename' pets 将指定文件读取并加到第二行后

    sed '=' pets 在显示的结果前显示行号


P:打印模式空间开端至\n内容,并追加到默认输出之前

h:把模式空间中的内容覆盖至保持空间中

H:把模式空间中的内容追加至保持空间中

g:从保持空间取出数据覆盖至模式空间

G:从保持空间取出内容追加至模式空间

x:把模式空间中的内容与保持空间中的内容进行互换

** n:读取匹配到的行的下一行覆盖至模式空间 

** N:读取匹配到的行的下一行追加至模式空间

d:删除模式空间中的行

  注意:对于没有被sed后续命令处理过多的数据,sed都是会默认输出的!

D:如果模式空间包含换行符,则删除直到第一个换行符的模式空间中的文本,并不会读取新的输入行,而使用合成的模式空间重新启动循环。如果模式空间不包含换行符,则会像发出d命令那样启动正常的新循环


例题1:将文本文件的n和n+1行合并为一行,n为奇数行 cat number.txt

1

2

3

4

5

6

  ]# sed 'N;s/\n/ /g' number.txt


例题2:

使用含有模式的文件,将文件中的小写字母转换成大写,并将每一行的字母与数字交换位置

文件 text 内容为:

1a

2b

3c

4d

5e

6f

7g

8h

9i


脚本文件 pattern

cat pattern

h

y/abcdefghi/ABCDEFGHI/

s/([0-9])([A-Z])/\2\1/


]# sed -rf pattern text




马哥M28—第十二天、


实验:删除/lib64/libc.so.6文件并恢复

    思路:利用rescue救援模式,虚拟机进入后马上ESC进入bios选项,选择rescue进行救援系统启动,将本地系统挂载到自创建的文件系统上;

          最终,开启临时shell后将临时救援系统根下对应目录下的文件拷贝到本地系统对应位置,重启待系统重写标签后即可!!


练习:统计光盘中Packages当中的rpm包的各架构数量,从大到小排列

    ls -1 |sed -r -n 's/.*\.(.*).rpm$/\1/p' |sort |uniq -c|sort -rn

    ls *.rpm |rev |cut -d. -f2 |rev |sort -rn |uniq -c

        rev:将内容倒着显示


rpm

    -i 安装

        -v 显示过程

        -vv 显示详细过程

        -h 显示进度

    -ivh 常用的安装选项组合

        --nodeps 忽略依赖性关系检测

        --replacepkgs 重复安装已经安装过的包,文件覆盖

        --replacefiles 即将安装的包的部分文件与其他已安装的包文件冲突,可继续安装,文件不覆盖

        --nosignature :不检查来源合法性

        --nodigest: 不检查包完整性

        --noscripts : 不执行程序包脚本

            %pre :安装前脚本; --nopre

            %post:安装后脚本; --nopost

            %preun:卸载前脚本;--nopreun

            %postun:卸载后脚本;--nopostun

        -U 指定的包比已安装的包新或者未安装

        -F 指定的包比已安装的包新

        --oldpackage 指定的包比已安装过的包旧

     ***--force :通常像更新升级内核这一类重要操作时,只用--force,可以保留原版本,即多版本共存!

            --replacepkgs, --replacefiles, --oldpackage  

        -q 查询已安装的所有包
            -qa 查询已安装的所有包

            -qf 文件路径,查询指定的文件来源于哪一个rpm包

            -ql 包名   查询该包提供了哪些文件

            -qp 包名   对未安装的包,指定rpm文件再配合其他查询子选项来进行各项查询操作

            -q --changelog 包名   查看更新日志

            -qc 包名  查看该软件包所提供的配置文件

            -qd 包名  查看该软件包所提供的文档文件

            -qi 包名  查看该软件包的详细信息

            -q --scripts 查看安装前以及安装后的脚本

            -q --provides 包名  查看一个软件包提供了哪些能力(功能)

            -q --whatprovides 能力名  查看一个能力由哪个包提供

            -q --whatrequires 能力名  查看一个能力依赖于哪些包


        -e 卸载

            -e 包名     

                rpm -e vsftpd --allmatches 安装了多个版本的某个rpm可以一次性全部删除

                或

                rpm -e `rpm -q vsftpd`    --nodeps 删除时不检查依赖性关系


        -V 校验已安装的包的文件哪些发生了更改或丢失,更改变化的类型如下:

            S file Size differs

            M Mode differs (includes permissions and file type)

            5 digest (formerly MD5 sum) differs

            D Device major/minor number mismatch

            L readLink(2) path mismatch

            U User ownership differs

            G Group ownership differs

            T mTime differs

            P capabilities differ


        -K rpm包  验证包的合法性

        --import 公钥  导入公钥

        rpm -qa "gpg-pubkey*" 查询公钥

        rpm -e `rpm -qa "gpg-pubkey"` 删除公钥


        --initdb  初始化/var/lib/rpm数据库

        --rebuilddb 重建包头索引目录


        rpm2cpio 将rpm包转换为cpio归档文件

        实验:模拟删除/etc/init/rcS.conf文件并恢复

            mout /dev/sr0(sr*指的是光盘光驱一类的设备)  /mnt/cdrom/

            1.rm -f /etc/init/rcS.conf

            2.rpm -qf /etc/init/rcS.conf

                    initscripts-9.03.58-1.el6.centos.x86_64

            3.cp /mnt/cdrom/Packages/initscripts-9.03.58-1.el6.centos.x86_64

            4.cd /app

            5.rpm2cpio initscripts-9.03.58-1.el6.centos.x86_64 |cpio -idv

            6.cp etc/init/rcS.conf /etc/init


yum(解决rpm依赖性安装的有效策略机制)

    repolist [all/enabled/disabled]

    clean all 清除缓存

    makecache 建立缓存

    yum-config-manager --add-repo=http://172.16.0.1/centos/6/

    install 包名
    remove 包名


作业:使用CentOS6 ftp部署一个可供CentOS6 CentOS7系统使用的yum网络仓库

     核心步骤:

        1.安装vsftpd

                rpm -ivh vsftpd-2.2.2-24.el6.x86_64.rpm

        2.启动vsftpd服务以及设置重启后自动启动

                service vsftpd start

                chkconfig vsftpd on

        3.关闭selinux

                vim /etc/selinux/config 设置SELINUX=disabled

                reboot

        4.关闭防火墙

                iptables -F

                service iptables save

        5.创建ftp目录及拷贝rpm文件

                cd /var/ftp/pub

                mkdir 6 7

        

以上是关于马哥教育第十一天十二天学习总结的主要内容,如果未能解决你的问题,请参考以下文章

马哥教育第三十一天至三十四天学习总结

马哥教育第十六天至十九天学习总结

马哥教育M28第十三天到第十五天学习总结

马哥教育第四十一至四十三学习总结

马哥教育学习第二周总结

马哥教育M28-第5-7天的学习总结