第三周作业

第三周 

文本处理工具:

            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)
上一篇 2016-12-18 22:00
下一篇 2016-12-19 01:12

相关推荐

  • 基于ssl功能实现mysql主从复制

    基于ssl功能实现mysql主从复制         证书准备:                                  CA证书…

    2016-11-22
  • N21沉舟第七周作业

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

    Linux干货 2016-08-22
  • 文件的查找与压缩归档

    文件的查找与压缩归档 locate find 压缩与归档 locate 主要用途 查询系统上预建的文件索引数据库 locate – find files by namelocate [OPTION]… PATTERN… locate查询文件时,会去搜索/var/lib/mlocat…

    Linux干货 2016-08-21
  • Nagios

    一、Nagios简介   Nagios是一款开源的电脑系统和网络监视工具,能有效监控Windows、Linux和Unix的主机状态,交换机路由器等网络设置,打印机等。在系统或服务状态异常时发出邮件或短信报警第一时间通知网站运维人员,在状态恢复后发出正常的邮件或短信通知。 Nagios原名为NetSaint,由Ethan Galstad开发并维护至今…

    2017-12-20
  • ☞rsyslog

    rsyslog 概述 rsyslog支持的facility与priority facility:设施、信道: priority:级别 rsyslog程序 配置文件 配置日志记录级别和路径 配置日志记录在远程rsyslog server rsyslog server端 rsyslog client端 测试远程服务器是否记录日志 rsyslog记录在MySQL中…

    Linux干货 2016-10-16
  • systemd管理

    centos7:systemdSystemd :系统启动和服务器守护进程管理器,负责在系统启动或运行时,          激活系统资源,服务器进程和其它进程Systemd 新特性:        系统引导时实现服务并行启动      &n…

    Linux干货 2017-04-10