• 【shell】shell指令学习


    仅供本人自学,完全从自己可以理解的角度写的,知识点都是copy网上已有的学习资料,侵权请联系本人删除,谢谢。

    1. 文本资料学习

    学习Linux,从掌握grep、sed、awk开始吧。
    Linux文本三剑客超详细教程—grep、sed、awk

    grep更适合单纯的查找或匹配文本,sed更适合编辑匹配到的文本,awk更适合格式化文本,对文本进行较复杂格式处理。

    开始copy知识点:

    (1) grep

    grep可用于shell脚本,因为grep通过返回一个状态值来说明搜索的状态,如果模板搜索成功,则返回0,如果搜索不成功,则返回1,如果搜索的文件不存在,则返回2。我们利用这些返回值就可进行一些自动化的文本处理工作。
    egrep = grep -E:扩展的正则表达式 (除了< , > , \b 使用其他正则都可以去掉\)
    在这里插入图片描述
    在这里插入图片描述

    正则表达式:
    在这里插入图片描述
    (2) sed

    功能:主要用来自动编辑一个或多个文件, 简化对文件的反复操作
    在这里插入图片描述
    sed里单引号和双引号的作用区别:
    双引号里可以使用shell里的变量;单引号不能。
    单引号和双引号里都可以存放模式。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    练习题:

    shell命令三剑客之sed命令详解

    显示文件的第一行,第二行
    sed -n ‘1,2p’ sed.txt 或者
    sed -n ‘3,$!p’ sed.txt
    显示文件的第二行至第五行
    sed -n ‘2,5p’ sed.txt 或者
    sed -n ‘2,+3p’ sed.txt
    显示文件的1,3,5行
    sed -n ‘1p;3p;5p’ sed.txt

    加入模式
    显示包含2的行
    sed -n ‘/2/p’ sed.txt
    不显示1开头的行
    sed -n ‘^1!p’ sed.txt
    显示以2结尾的行
    sed -n ‘/2$/p’ sed.txt
    显示以1和3开头的行
    sed -n ‘/ ^ [1,3]/p’ sed.txt

    commend操作: d 删除操作
    删除空行和注释
    sed -r ‘/^$/ ^#/d’ sed.txt 操作:-r 支持扩展正则表达式
    删除空行再删除注释
    sed -e ‘/^ $/d’ -e ‘/^#/d’ sed.txt 或者
    sed ‘/^ $/d;/^#/d’ sed.txt

    commend操作: r 读入操作
    在sed.txt文件的末尾后面读入/etc/passwd文件的所有内容
    sed '/$r /etc/passwd/ sed.txt

    commend操作:w 写入操作
    将文件/etc/passwd的第一行写到sed.txt文件中
    sed ‘1w sed.txt’ /etc/passwd

    commend操作:s 替换操作
    将sed.txt文件中的空格全部替换为冒号
    sed ‘s/ /:/g’ sed.txt
    在文件sed.txt的2到3行前面加上注释
    sed -n ‘2,3s/^/#/p’ sed.txt
    在文件sed.txt的每行末尾加上问号
    sed -n ‘s/$/?/p’ sed.txt

    (3) awk

    awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入(stdin)、一个或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。它在命令行中使用,但更多是作为脚本来使用。awk有很多内建的功能,比如数组、函数等,这是它和C语言的相同之处,灵活性是awk最大的优势。

    下面记录博主斯言甚善 写的博文:awk命令的操作,看这一篇文就够了
    awk工作流程可分为三个部分:
    读输入文件之前执行的代码段(由BEGIN关键字标识);
    主循环执行输入文件的代码段;
    读输入文件之后的代码段(由END关键字标识)。
    在这里插入图片描述
    在这里插入图片描述

    2. 视频学习

    哔哩哔哩上面观看黑马程序员老师讲的视频,发现正是自己需要的,讲得浅显易懂,我能够学进去对自己而言就是最好的学习资料。附上视频链接如下:

    https://www.bilibili.com/video/BV1st411N7WS?p=4&spm_id_from=pageDriver

    下面都是我观看视频后的一些笔记(主要是截频)

    软件包管理:yum工具

    网络协议:
    在这里插入图片描述
    ssh:远程管理协议
    scp: 数据同步,不能实现数据的实时同步
    文件共享服务

    shell通配符
    shell小工具的使用:grep、cut、sort
    grep:行过滤工具
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    打印行号
    在这里插入图片描述
    在这里插入图片描述
    cut:列截取
    截取每行的第5个字符
    在这里插入图片描述
    指定冒号":"分隔符,截取第一列和第三列
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    只去除重复连续的行

    在这里插入图片描述
    tee默认是覆盖写入文件,加“-a”是追加写入
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    awk是一种编程语言,主要对文本及数据进行处理的。逐行扫描的,从第一行到最后一行,寻找匹配特定模式的行,找到后进行想要的操作。
    print是awk的打印函数,可以匹配正则表达式。
    在这里插入图片描述
    gawk是awk的GNU版本。awk软链接到gawk。
    在这里插入图片描述
    统计网站的访问量、IP量。
    支持条件判断、循环,比sed强大很多。
    在这里插入图片描述
    单引号中可以使地址定位也可以使执行指令
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    打印出文件的所有行:
    在这里插入图片描述
    打印文件的第一行至第五行:
    NR:地址定位
    在这里插入图片描述
    不加打印peint动作,默认也会打印出来
    在这里插入图片描述

    打印出第一行或者第五行:
    在这里插入图片描述
    打印出以冒号分隔的第一列到最后一列:
    $NF是最后一列
    在这里插入图片描述
    打印出以冒号分隔的第一列到最后一列,以及打印出倒数第二列:
    在这里插入图片描述
    打印出文件的列数,awk是逐行处理文本的
    在这里插入图片描述
    练习题:
    在这里插入图片描述
    awk是逐行处理文本的
    NR1,NR5和/^root/是两个条件,第一个是第一行的内容,第二个是第五行的内容,第三个是以root开头的行,满足这几个条件的行都会被打印出来。
    在这里插入图片描述
    awk按照分隔符打印出来之后,默认以“空格”分割

    用“OFS”指令指定分割符
    在这里插入图片描述
    定义输入间隔符和输出间隔符
    在这里插入图片描述
    不定义输入间隔符,用双引号引起来输出间隔符
    在这里插入图片描述
    RS:定义换行,awk默认换行符结尾的就是一行
    RS和ORS了解即可,最常用的是“FS”和“OFS”
    在这里插入图片描述
    在这里插入图片描述
    print函数会自动换行,printf函数默认不会在结尾自动换行,要加“\n",echo默认不会换行,echo -n才会自动换行
    在这里插入图片描述
    在这里插入图片描述
    awk中定义变量,变量前不需要加$符号

    打印变量3,后面跟了文件名称,awk每行都打印出变量3
    在这里插入图片描述
    不敲BEGIN,敲一下回车键打印出一个变量3
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    正则表达式
    在这里插入图片描述
    在这里插入图片描述
    打印1至5行并且包含以root开头的行
    在这里插入图片描述
    前导字符出现一次或多次
    在这里插入图片描述
    在这里插入图片描述
    $(id -u)==0
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    计算1-10以内奇数的和
    在这里插入图片描述
    使用awk实现:计算1-10以内奇数的和
    在这里插入图片描述
    awk处理的对象是文本或者数据,管道符前面的是awk的处理对象,处理对象是数据,每处理一行的数据就将数据赋值给$0
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

  • 相关阅读:
    Eolink 征文活动- -专为开发者设计的一款国产免费 API 协作平台
    C++ 基于boost.asio封装的日志库,支持输出到文件、控制台和syslog远程日志,支持变长参数的日志输出
    笔记本电脑充电器、电源适配器以及Type-c手机充电器UL60950认证报告具体要求
    Algorithm Review 4
    【备战蓝桥杯 | 软件Java大学B组】十三届真题深刨详解(2)
    IPEmotion的NVH噪声测试模块——坎贝尔图
    华为十年大佬带你开启springboot实战之旅,从源码到项目,一步到位!
    微信授权登录功能实现
    【C++】初始化列表、static成员、友元、匿名对象、附练习题
    3.03_python+Django+mysql实现pdf转word项目_项目部署-mod_wsgi安装配置
  • 原文地址:https://blog.csdn.net/Logintern09/article/details/117675755