linux之定时任务,sed+awk

定时任务: crontab
    crond        定时任务的守护进程
    默认此服务基本所有GNU/Linux操作自带
    定时任务的主配置文件: /etc/crontab (不建议修改)
    设置定时任务的命令: crontab
        crontab -e  编辑当前用户的定时任务
            以空格为分隔符分成六个字段
            第一个字段代表: 分钟    0 - 59
            第二个字段代表: 小时    0 - 23
            第三个字段代表: 日      1 - 31
            第四个字段代表: 月      1 - 12
            第五个字段代表: 星期    0 - 7
            第六个字段代表: 操作(命令或脚本)

            *       代表每分钟 每小时 每日 每月 每星期
            ,       分隔时间 19,24 * * * * CMD
            -       代表时间段  19-24 * * * *  CMD
            */n     每隔n个单位  */5 * * * * CMD

            星期与日期是或的关系
            */30 */2 15 6 7
                6月15号每隔2个小时每隔30分钟去执行或每个星期天去执行

            */30,20,25 */2 15 6 *
                6月15号每隔2个小时每隔30分钟或20分钟和25分钟去执行

            */30,20-25 */2 15 6 *
                6月15号每隔2个小时每隔30分钟或20分钟到25分钟之间去执行

-------------------------------------------------------------------------------
文本处理: sed + awk
    起源: ed文本编辑器 -> grep,egrep -> sed -> awk
    perl语言 -> 正则表达式

    sed  流编辑器 (查找/匹配) {
        -n      取消默认输出(sed默认会输出整个文件内容)
        -e      支持同时生效多个sed表达式命令
        -i      所有命令的操作应用到文件中
        -r      支持扩展正则表达式(+ ? |) 与-e冲突

        输出        p
            输出第一行
                sed -n '1p' file
            输出第一行到第三行
                sed -n '1,3p' file
            输出第一行和第三行
                sed -n '1p;3p' file
            输出有关键词root的行
                sed -n '/root/p' file
            输出有关键词root和kyo的行
                sed -n -e '/root/p'  -e '/kyo/p' file
                sed -n -e '/root/p;/kyo/p' file
                sed -n -e '/root|kyo/p' file
            输出有数字的行
                sed -n '/[0-9]/p' file

        删除        d
            d命令是按行删除
            将文件输出时做删除操作, 用法与p命令一样

            删除第一行
                sed '1d' file
            删除第一行到第三行
                sed '1,3d' file
            ...
            删除空行(兼容有空行中有空格)
                sed '/^\ *$/d' file
                sed '/^[[:blank:]]$/d' file

        替换        s
            把每行的第一个root替换成kyo
                sed 's/root/kyo/' file

            把每行的第二个root替换成kyo
                sed 's/root/kyo/2' file

            把每行的所有root替换成kyo
                sed 's/root/kyo/g' file

            把每行的所有root替换成rootkyo
                sed 's/root/rootkyo/g' file
                sed 's#root#&kyo#g' file

            把第3行到13行中的全部root替换rootkyo
                sed '3,13s/root/&kyo/g' file

            把以bin开头的行到以sys开头的行,将/替换成#
                sed '/^bin/,/^sys/s/\/\#/g' file

        子表达式(位域)
            -e 使用()必须转义 \(...\)
            -r 使用()不需要转义

            删除每行中第一个字符
                sed 's/^.//'  file

            删除每行中的第二个字符
                sed -nr 's/^(.)./\1/p' file

            交换每行中的第一个字符和第二个字符
                sed -nr 's/^(.)(.)/\2\1/p' file

            删除每行中的第二个单词
                单词: [a-zA-Z]+
                单词分隔符: [^a-zA-Z]+

                sed -nr 's/^([^a-zA-Z]*[a-zA-Z]+[^a-zA-Z]+)[a-zA-Z]+/\1/p' file
                sed -r 's/[a-zA-Z]+//2' file

            删除每行中的最后一个单词
                sed -r 's/[a-zA-Z]+([^a-zA-Z]*)$/\1/' file

            删除每行中的倒数第二个单词
                sed -nr 's/[a-zA-Z]+([^a-zA-Z]+[a-zA-Z]+[^a-zA-Z]*)$/\1/p' file

            交换每行中的第二个和倒数第二个单词
                \w   ==  [a-zA-Z0-9]
                \d   ==  [0-9]

                sed -nr 's/^([^a-zA-Z]*[a-zA-Z]+[^a-zA-Z]+)([a-zA-Z]+)(.*[^a-zA-Z]+)([a-zA-Z]+)([^a-zA-Z]+[a-zA-Z]+[^a-zA-Z]*)$/\1\4\3\2\5/p' file

            用一行命令截取IP(使用sed加管道)
                截取结果: 3.3.3.9/255.255.255.0
                ifconfig enp0s25 | sed -nr 's/.*[^0-9.]([0-9.]+).*[^0-9][0-9]+\.[0-9]+\.[0-9]+\.[0-9]+.*[^0-9.]([0-9.]+)/\1\/\2/p'
    }

    awk
        功能强大到语言级别
        会处理连续的分隔符(直接替代cut命令)

        分隔字段并且控制输出字段样式

        以冒号为分隔符打印第一列
            awk -F":" '{print $2}' file

        以冒号为分隔符统计第七列有多少个/usr/sbin/nologin有多少个
            awk 'BEGIN{FS=":"; count=0}{if ($7 == "/usr/sbin/nologin")count++}END{print count}' file
        使用awk脚本
            #!/usr/bin/awk

            BEGIN {
                FS=":"
                count=0
            }
            {
                if ($7 == "/usr/sbin/nologin") {
                    count++
                    print $0
                }
            }

            END {
                print "count = "count
            }

            运行: awk -f 1.awk file

            $0          当前处理行
            $1 - $n     当前处理行的第几列
            FS          分隔符 支持正则表达式
            NF          当前多少个字段
            NR          当前处理到第几个行
            OFS         输出列分隔符
            ORS         输出行分隔符


        打印每行的第二个单词和倒数第二个单词
            awk BEGIN{FS="[^a-zA-Z]+", s=0}{s=NF - 1; print $2,$s}' file

        隔行删除
            awk '{if (NR % 2 == 0) print $0}' file

        打印每行超过有5个字段的行
            awk -F":" '{if (NF > 5) print $0}' file

-------------------------------------------------------------------------------
git: 版本管理器
    集中式管理  svn
    分布式管理  git
        1. linux内核作者开发, 用于管理linux内核代码
        2. 支持分布式
        3. 只保存代码差异
        4. 分支无成本
        5. 开源 github  / git.oschina.net

    熟悉*nix系列操作系统的管理

    官方: git-scm.com
    教程: http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

java:
    JRE     java的运行环境
    JDK     java的开发环境 包含JRE

    ubuntu:
        apt install openjdk-8-jdk

    官网:
        http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
        下载jdk-8u121-linux-x64.tar.gz
        tar -xf jdk-8u121-linux-x64.tar.gz -C ~/
        修改 ~/.bashrc
            export JAVA_HOME=~/jdk-8u121-linux-x64
            export PATH=$PATH:$JAVA_HOME/bin
        . ~/.bashrc
        java -version


    vim hello.java
        public class hello {
            public static void main(String arg[]) {
                    System.out.println("hello world!");
                }
        }

    javac hello.java
    java hello






  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值