Linux day14

综合实用案例

归档文件

        实际生产应用中,往往需要对重要的数据进行归档备份。

        需求:实现一个每天对指定目录归档的脚本,输入一个目录名称(末尾不带/),将目录下所有文件按天归档保存,并将归档日期附加在归档文件名上,放在/root/archive下。

        这里用到了归档命令:tar

        条件判断里,判断是否目录正确存在用-d,是否文件正确存在用-f。

        后面可以加上-c选项表示归档,加上-z选项表示同时进行压缩,得到文件后缀名为.tar.gz。

正则表达式

        正则表达式使用单个字符来描述、匹配一系列符号某个语法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。在Linux中,grep、sed、awk等文本处理工具都支持通过正则表达式进行模式匹配。

常规匹配

        一串不包含特殊字符的正则表达式匹配它自己,例如:

                cat /etc/passwd | grep atguigu

        就会匹配所有包含atguigu的行。

常用特殊字符

        -n显示行号

        1.特殊字符:^

                ^匹配一行的开头,例如 ^a,会匹配出所有以a开头的行

        2.特殊字符:$

                $匹配一行的结束,例如t$,会匹配出所有以t结尾的行

        3.特殊字符: .

                . 匹配一个任意字符,例如r..t,会匹配r..t格式的所有行

        4.特殊字符:*

                *不单独使用,他和上一个字符连用,表示匹配上一个字符0次或多次,例如,ro*t,就会匹配rt,rot,root,rooot,roooot等所有行。

        5.字符区间(中括号):[ ]

                [ ]表示匹配某个范围内的一个字符,例如

                [6,8]:匹配6或8;

                [0-9]:匹配一个0-9的数字

                [0-9]*:匹配任意长度的数字字符串

                [a-z]:匹配一个a-z之间的字符

                [a-z]*:匹配任意长度的字母字符串

                [a-c,e-f]:匹配a-c或者e-f之间的任意字符

        6.特殊字符:\

                \表示转义,并不会单独使用。由于所有特殊字符都有其特定匹配模式,当我们想匹配某一特殊字符本身时(例如,我想找出所有包含‘$’的行),就会碰到困难。此时我们就要将转义字符和特殊字符连用,来表示特殊字符本身,例如  'a\$b',就会匹配所有包含a$b的行。注意需要使用单引号将表达式引起来。

文本处理工具

cut

        cut的工作就是“剪”,具体的说就是在文件中负责剪切数据用的。cut命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段输出。

        cut 【选项】filename

        说明:默认分隔符是制表符

        选项:

                -f:列号,提取第几列;(可以使用n-n范围显示,n为数字,或者-n和n-,分别表示n之前所有和n之后所有)

                -d:分隔符,按照指定分隔符分割列,默认是制表符“\t”;

                -c:按字符进行切割 后加n 表示取第几列 比如,-c 1;

awk

        一个强大的文本分析工具,把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行分析处理。(awk与cut相比不需要考虑信息最前的多个空格)

        awk【选项】‘/pattern1/{action1}  pattern2/{action2}...’ filename

        pattern:表示awk在数据中查找的内容,就是匹配模式;

        action:在找到匹配内容时所执行的一系列命令;awk自带了输出参数print,并且可以$n,n为数字,输出第n列。

        选项:

                -F:指定输入文件分隔符

                -v:赋值一个用户定义变量

        关键字:

                BEGIN:在所有数据在读取之前要做的操作

                END:在所有数据读取之后要做的操作

        内置变量:

                FILENAME:文件名

                NR:已读的记录数(行号)

                NF:浏览记录的域的个数(切割后,列的个数)

综合应用案例

发送消息

        我们可以利用Linux自带的mesg和write工具,向其它用户发送消息。

        需求:实现一个向某个用户快速发送消息的脚本,输入用户名作为第一个参数,后面直接跟要发送的消息。脚本需要检测用户是否登录在系统中、是否打开消息功能,以及当前发送消息是否为空。

        mesg:查看当前用户的消息功能是否打开。

                mesg n:关闭当前用户的消息功能,开启则是y。

        who -T:可以查看所有用户的消息功能是否打开。

        grep【选项】

                选项:

                        -i:忽略大小写;

                        -m 数字:需要匹配几行;

        if中条件判断里,-z可以用来判断是否为空。

        who指令得出的用户名参数会太长,可以用awk取第一列解决。

        write用法:echo $user_msg | write $get_user $user_terminal

完结散花!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值