第三周作业

第三周 

文本处理工具:

            linux上文本处理三剑客:

                     grep、egrep、fgrep:文本过滤工具(模式pattern)工具

                          grep:基本正则表达式  -E  -F

                          egrep:扩展正则表达式,-G -F

                          fgrep:不支持正则表达式,

                     sed:stream editor,流编辑器;文本编辑工具;

                     awk:LINux的实现为gawk,文本报告生成器(格式化文本)

            

            正则表达式:

                  由一类特殊字符及文本字符所编写的模式,其中有些字符不表示其字面意义,而是用于表示控制和通配的功能;

                  分两类:

                     基本正则表达式:BRE

                     扩展正则表达式:ERE

                  元字符:\(hello[[:space:]]\+|)|+

            grep:Global serch REgular expression and print out         the line.

                  作用:文本搜索工具、根据用户指定的模式”(过滤条件)“

                        对目标文件逐行进行匹配坚持;打印匹配到的行;

                  模式:由正则表达式的元字符及文本字符所编写的过滤条件

                  正则表达式引擎;

                  grep [OPTIONS] PATTERN [FILE…](同时处理多个file)

                  grep [OPTIONS]  [-e PATTERN] | -f FILE [FILE…]

                       

                       常用OPTIONS:

                            –color=auto:对匹配到的文本着色高亮显示;

                            -i:ignorecase,忽略字符大小写;(默认情况是区分大小写)

                            -o:仅显示匹配到的字符串本身;

                            -v:–inver-match:显示不能被模式匹配到的行

                            -E:支持使用扩展的正则表达式(元字符)

                            -F:搜索

              -q:–quiet,–silent:     

                      例如#grep "UUID" /etc/fstab

                           -A#;after,后#行

                           -B#;bifore,前#行

                           -C#:context,前后各# 行

                      基本正则表达式元字符:

                            字符匹配:

                                 .:匹配任意单个字符;

                                    例如:grep “r..t” /etc/passwd

                                 []:匹配指定范围内的任意单个字符;

                                 [^]:匹配指定范围外的任意单个字符;

                                     [:digit:]

                                     [:lower:]

                                     [:upper:]

                                     [:alpha:]

                                     [:alnum:]

                                     [:punct:]

                                     [:space:]

            

                            匹配次数:

                                  用在指定其出现的次数的字符的后面,用于限制其前面字符

                                  出现的次数;

                                  *(仅表现次数):匹配其前面的字符任意次:0,1,多次;

                                     例如: grep “x*y” 表示前面的x可以出现0,1,或者多次

                                  .*:匹配任意长度的任意字符

                                  例如 grep "r.*"

                                  \?:匹配其前面的字符0次或1此,即前面字符可有可无

                                  \+:匹配其前面字符1次或多次;即前面的富足出现至少1次

                                  \{m\}:只匹配其前面字符m次。

                                  \{m,n\}:匹配其前面的字符至少m次,至多n次

                                      \{0,n\}:至多n次

                                      \{m,\}\:至少m次

                            位置锚定:

                                ^:行首锚定;用于模式的最左侧;

                                   grep "^root" /etc/passwd

                                $:行尾锚定;用于模式的最右侧;

                                   grep "root$" /etc/passwd

                                ^PATTERN$:用于pattern匹配整行;

                                ^$:空白行;

                                ^[[:space:]]*$:空行或包含空白字符的行;

                                单词:非特殊字符组成的联系字符串都称为单词;

                                \<或\b:词首锚定

                                  例如grep "\<root" /etc/passwd 用于匹配root出现在整个单词的最左侧(针对一个单词)

                                \>或\b:词尾锚地,用于单词模式的右侧

                                  例如grep  "root\>" /etc/passwd 

                                  用于匹配root整个单词的词尾也就是最右边(针对一个单词来说)

                                

                                \<PATTERN\>:匹配完整的单词

1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。

who |cut -d' ' -f1|uniq
2、取出最后登录到当前系统的用户的相关信息。

# who |tail -1 |cut -d ' ' -f1|id
uid=0(root) gid=0(root) 组=0(root)
3、取出当前系统上被用户当作其默认shell的最多的那个shell。

# cut -d':' -f7 /etc/passwd |sort |uniq -c |sort -n |tail -1 |cut -d' ' -f7
# cut -d':' -f7 /etc/passwd |sort |uniq -c |sort -n |tail -1 |awk -F' ' '{print $2}'
4、将/etc/passwd中的第三个字段数值最大的后10个用户的信息全部改为大写后保存至/tmp/maxusers.txt文件中。

# sort -nt':' -k3  /etc/passwd |tail |tr 'a-z' 'A-Z' >/tmp/maxusers.txt
5、取出当前主机的IP地址,提示:对ifconfig命令的结果进行切分。
CentOS 7:

# ifconfig |head -2|tail -1|awk -F' ' '{print $2}'
CentOS 6:

#  ifconfig |head -2|tail -1 |cut -d':' -f2 |cut -d' ' -f1
6、列出/etc目录下所有以.conf结尾的文件的文件名,并将其名字转换为大写后保存至/tmp/etc.conf文件中。

# ls /etc/*.conf |cut -d'/' -f 3 |tr 'a-z' 'A-Z' >/tmp/etc.con
7、显示/var目录下一级子目录或文件的总个数。

# ls /var/ |wc -l
8、取出/etc/group文件中第三个字段数值最小的10个组的名字。

# sort -nt':' -k3 /etc/group |head |cut -d':' -f1
9、将/etc/fstab和/etc/issue文件的内容合并为同一个内容后保存至/tmp/etc.test文件中。

# cat /etc/fstab /etc/issue > /tmp/etc.test
10、请总结描述用户和组管理类命令的使用方法并完成以下练习:
(1)、创建组distro,其GID为2016;

# groupadd -g 2016 distro
(2)、创建用户mandriva, 其ID号为1005;基本组为distro;

# useradd -g distro -u 1005 mandriva
(3)、创建用户mageia,其ID号为1100,家目录为/home/linux;

# useradd -u 1100 -d /home/linux mageia
(4)、给用户mageia添加密码,密码为mageedu;

# echo magedu |passwd –stdin mageia
# echo -e "magedu\nmagedu" |passwd mageia
(5)、删除mandriva,但保留其家目录;

# userdel mandriva
(6)、创建用户slackware,其ID号为2002,基本组为distro,附加组peguin;

# groupadd peguin
# useradd -u 2002 -g distro -G peguin slackware
(7)、修改slackware的默认shell为/bin/tcsh;

# usermod -s /bin/tcsh slackware
(8)、为用户slackware新增附加组admins;

# groupadd admins
# usermod -aG admins slackware
(9)、为slackware添加密码,且要求密码最短使用期限为3天,最长为180天,警告为3天;

# echo "magedu" |passwd –stdin slackware
# chage -m 3 -M 180 -W 3 slackware
(10)、添加用户openstack,其ID号为3003, 基本组为clouds,附加组为peguin和nova;

# groupadd nova
# groupadd clouds
# useradd -u 3003 -g clouds -G peguin,nova openstack
(11)、添加系统用户mysql,要求其shell为/sbin/nologin;

]# useradd -r -s /sbin/nologin mysql
(12)、使用echo命令,非交互式为openstack添加密码。

# echo -e "magedu\nmagedu" |passwd openstack

原创文章,作者:Version,如若转载,请注明出处:http://www.178linux.com/64098

(0)
VersionVersion
上一篇 2016-12-18
下一篇 2016-12-19

相关推荐

  • 第7天:磁盘文件管理

    http://note.youdao.com/yws/public/redirect/share?id=57ab13d4749920de1fbb0d4953fcd21b&type=false

    Linux干货 2016-08-18
  • Linux运维学习历程-第二天-虚拟机的配置

    学习Linux我自己的感觉是可以按Linus的哲学思想来学习 比如一切皆文件,那我们首先可以记住一些重要的常见的路径和文件,并知道有什么作用,这样在初期学习时,我们要干什么时,知道在哪里找;   而命令我们可以每天记忆并练习一些,本身Linux的基本命令都是一下短小精悍的而且有些命令名本身就是英文单词,像date命令就是和系统时间有关的命令用来显示…

    Linux干货 2016-08-03
  • N25第7周作业

    1、创建一个10G分区,并格式为ext4文件系统;   (1) 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl;    (2) 挂载至/data/mydata目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳; ]# fdisk /dev/sdb #划出一个…

    Linux干货 2017-02-21
  • grub安装

    创建两块磁盘分区 创建boot目录和根本目录rootfs mkdir /mnt/boot mkdir /mnt/rootfs mount /dev/sdb1 /mnt/boot mount /dev/sdb2 /mnt/rootfs 安装gurb gurb-install –root-directory=/mnt /dev/sdb1 在/mnt/…

    Linux干货 2017-11-14
  • 网络班N22期第七周博客作业

    1、创建一个10G分区,并格式为ext4文件系统;    (1) 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl;     [root@bogon ~]# fdisk /dev/sde   &nb…

    Linux干货 2016-10-17
  • N25-第10周博客作业

    请详细描述CentOS的启动流程     启动第一步–加载BIOS         当打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它,这是因为BIOS中包含了CPU的相关信息、设备启动顺序信息、硬盘信息、内存信息…

    Linux干货 2017-03-10