第三周作业

第三周 

文本处理工具:

            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

相关推荐

  • Linux基础——文件管理

    Linux基础——文件管理 文件管理及常用命令详解       Linux文件系统是以/为基本的倒置树状结构,我们来进一步学习下文件或者目录的操作和管理命令:  目录相关操作:cd、pwd、mkdir、rmdir 目录及文件检索:ls 复制、移动、删除:cp、mv、rm…

    Linux干货 2016-09-27
  • linux函数和数组定义

    函数介绍:    函数function 是由若干条shell 命令组成的语句块,实现代码重用和模块化编程。    它与shell 程序形式上是相似的,不同的是它不是一个单独的进程,不能独立运行,而是shell 程序的一部分。    函数和shell 程序比较相似,区别在于:   …

    Linux干货 2017-04-02
  • Linux用户、组管理和正则表达式的基础命令

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其他用户均没有任何权限 [root@localhost skel]# cp -r /etc/skel /home/tuser1 [root@localhost skel]# ls -al /home/tuser1 total 12 drwxr-xr-x.…

    Linux干货 2017-07-20
  • haproxy

    12.1 高性能负载均衡软件HAProxy介绍 随着互联网业务的迅猛发展,大型电商平台和门户网站对系统的可用性和可靠性要求越来越高,高可用集群、负载均衡集群成为一种热门的系统架构解决方案。在众多的负载均衡集群解决方案中,有基于硬件的负载均衡设备,例如F5、Big-IP等,也有基于软件的负载均衡产品,例如HAProxy、LVS、Nginx等。在软件的负载均衡产…

    2018-01-03
  • 第二周作业

    1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。 目录管理类的命令: mkdir, rmdir mkdir:make directories mkdir [OPTION]… DIRECTORY… -p: 自动按需创建父目录; -v: verbose,显示详细过程; -m MODE:直接给定权限; 注意:路径…

    Linux干货 2018-01-17
  • linux防火墙介绍

    一、前言firewall(防火墙):工作在网络进入或者流包,进出的网络数据包进行一定的规则进行检查过滤系统。包括iptables和netfilter组件。iptables 是与 Linux 内核集成的 IP 信息包过滤系统。如果 Linux 系统连接到因特网或 LAN、服务器或连接 LAN 和因特网的代理服务器, 则该系统系统中更好地控制 IP 信息包过滤和…

    2017-04-30