美文网首页
Shell | 基础知识点实例整理(二)

Shell | 基础知识点实例整理(二)

作者: Root_123 | 来源:发表于2019-02-28 10:17 被阅读48次

    1、提取列命令:cut

    cut [选项] 文件名

    选项:
    -f  #提取第几列
    -d 分隔符  #按照指定分隔符对列进行分割(默认以 Tab 制表符作为分隔符)
    

    【==> grep提取行,cut提取列】

    2. 格式化输出命令:printf

    printf '输出类型输出格式' 输出内容
    printf '输出类型 输出格式' 输出内容

    输出类型:
    %ns     输出字符串。n表示输出的字符数
    %ni     输出整数。n表示输出的数字个数
    %m.nf   输出浮点数。m表示输出的总位数(整数位+小数位),n表示输出的小数位数,m-n为整数位数
    
    输出格式:
    \a  输出警告声音(限定本地终端)
    \b  输出退格键(Backspace)
    \f  清除屏幕
    \n  换行
    \r  回车
    \t  水平制表符(Tab键)
    \v  垂直制表符(Tab键)
    

    echo与printf比较:
    echo会按照输入的格式进行输出显示,printf若不进行格式化控制则不会按照输入的格式输出,echo相当于是在printf的基础上进行了改善的输出方式
    在awk命令输出时支持print和printf命令

    print与printf比较:
    print会在每个输出之后自动加上一个换行符(Linux默认没有print命令),printf是标准的格式输出命令,不会自动加入换行符,需要通过手工方式加入换行符

    3. 提取列/字段命令:awk

    1)awk使用规则
    提取列/字段:条件符合则执行对应动作;无条件时都会执行动作
    awk '条件1{动作1}条件2{动作2}...' 文件名

    条件(Pattern):
    一般使用关系表达式作为条件
    
    动作(Action):
    格式化输出(如:printf输出)
    流程控制语句(如:for循环)
    

    2)awk处理过程描述:
    ==> 逐行处理数据
    Step1-读取第1行:首先读取文档中的第一行数据
    Step2-判断条件:若满足条件,则执行动作;本例为无条件,即所有都满足执行
    Step3-建立变量:将文件名student.txt赋值给0,1、2、3、$4分别对应作为第1行的第1、2、3、4个字段
    Step4-执行动作:输出第2个字段、水平制表符、第4个字段、换行符
    Step5-读取第2行,判断条件,执行动作
    Step6-读取第3行,...
    ...
    StepN-直至将文档中的所有行都读取完成,执行完成动作为止

    3)awk与cut对比:

    • awk对文档中按每个字段提取,逐行处理数据,不需要受分隔符的限制,使用范围相对更广;cut对文档中按列提取,严格收分隔符限制
    • 文档中的数据,若有规范分隔符,cut和awk均可使用;若无规范的分隔符(如:不同长度的空格符),则建议使用awk按照字段提取

    4、文本内容替换命令:sed
    sed:是一种几乎包括在所有Unix平台(包括Linux)的轻量级流编辑器。sed主要用来将数据进行选取、替换、删除、新增的命令

    sed [选项] '[动作]' 文件名

    选项:
    -n  把经过sed命令处理的行进行输出,不加"-n"则会在sed处理数据的基础上再叠加输出所有数据
    -e  允许对输入数据应用多条sed命令编辑
    -i  不加"-i"只是临时修改(把修改的效果显示在屏幕上,实际的文件并未变化);
        加"-i"则会修改到实际的文件内容,此时需要防止误操作;不输出到屏幕
    
    动作:
    p   打印整行。输出指定的行,如:'np',表示第n行
    d   删除整行。删除指定的行
    i   行前插入。在当前行的前面插入一行or多行
    a   行后追加。在当前行的后面添加一行or多行
    c   替换整行。用"c"后面的字符串替换原数据行
    s   替换字串。用一个字符串替换另一个字符串;格式:"行范围s/旧字串/新字串/g"
    

    5、排序命令:sort

    sort [选项] 文件名

    选项:
    -f  忽略大小写
    -n  以数值型进行排序(默认使用字符串型排序)
    -r  反向排序(从大到小)
    -t  指定分隔符(默认分隔符是制表符)
    -k n[,m]    按照指定的字段范围排序:从第n个字段开始到第m个字段结束
               (不加'[,m]'则默认到整个行尾)
    

    6、统计命令:wc

    wc [选项] 文件名

    选项:
    -l  只统计行数
    -w  只统计单词数
    -m  只统计字符数
    

    练习

    1、cut命令、awk命令提取列/字段
    提取挂载点在根目录的一行数据,提取该行数据中 Use%字段值,对应位置变量:$4,#对以上提取值处理:以 "%"为分隔符提取第 1列数据



    【FS内置变量】(内置分隔符):


    【关系运算符】读取成绩单,判断并输出80分及以上的学生Name($2),但不包含Name本身名称


    2、sed命令操作文本内容
    查看、删除整行
    行前插入、行后追加


    替换整行、替换字符串


    3、统计命令:wc
    统计当前目录下的文件个数


    相关文章

      网友评论

          本文标题:Shell | 基础知识点实例整理(二)

          本文链接:https://www.haomeiwen.com/subject/pzocuqtx.html