美文网首页
Linux-A-基础-第6章-管道,重定向及文本处理

Linux-A-基础-第6章-管道,重定向及文本处理

作者: sky92archangel | 来源:发表于2018-10-01 22:46 被阅读0次

    目录(持续更新)


    基础-第0章-安装
    基础-第1章-基本操作
    基础-第2章-磁盘及文件系统管理
    基础-第3章-获得帮助
    基础-第4章-用户及权限基础
    基础-第5章-网络基本配置
    基础-第6章-管道,重定向及文本处理
    基础-第7章-系统启动详解

    进阶-第1章-日志服务
    进阶-第2章-DNS域名服务器
    进阶-第3章-FTP文件共享服务
    进阶-第4章-NFS文件共享服务
    进阶-第5章-SMB文件共享服务
    进阶-第6章-WEB服务Apache篇
    进阶-第7章-电子邮件服务
    进阶-第8章-Linux服务基础及管理

    [高级-第1章-LVM逻辑卷]
    [高级-第2章-高级权限ACL]
    [高级-第3章-RAID提升速度及冗余]
    [高级-第4章-高级网络-网卡绑定,子端口]
    [高级-第5章-SELinux安全系统基础]
    [高级-第6章-IPTable防火墙基础]
    [高级-第7章-Linux-自动化部署]


    第6章 管道,重定向及文本处理


    第一节 linux多命令协作:管道和重定向
    • 不要重复发明轮子

        开源文化的核心理念之一就是不要重复发明轮子,很多开源软件都是先有软件代码功能的重新组合
        就好象通过零件装配机器一样,源代码的开放和共享让这成为了可能,同时也大大的提高了效率和生产力
      
    • 管道和重定向

        在linux中大多命令都很简单,我们可以通过将不同功能的命令组合一起来达到某个复杂的功能的目的
      
        linux中几乎所有命令的返回数据都是纯文本的(因为命令都是运行在CLI的)
      
        而纯文本形式数据大多是输入格式,就让很多命令协作成为可能
      
        linux的命令行为我们提供了管道和重定向机制,多命令协作就是通过管道和重定向完成的
      
    • 命令行shell的数据流有以下定义

        STDIN       标准输入    0   键盘
      
        STDOUT      标准输出    1   终端
      
        STDERR      标准错误    2   终端
      

      命令通过STDIN接受参数数据
      通过STDOUT输出结果
      通过STDERR输出错误

    • 通过管道和重定向我们可以控制CLI数据流

    • 重定向

            >   将STDOUT重定向到文件(覆盖)   echo"linuxcast" > outfile
                将命令的输出保存到文件中    ls > outfile
                无法保存错误报错信息
      
            >>  将STDOUT重定向到文件(追加)   echo"linuxcast" >> outfile
                将命令的输出保存到文件中    ls >> outfile
                无法保存错误报错信息
      
            2>  将STDERR重定向到文件       ls nothere 2> errorout
                只将命令的报错信息保存到文件  
                正常信息不会被保存
      
            2>&1    将STDERR和STDOUT结合        ls nothere 2> alloutput
                将命令输出和报错都保存到文件
      
            <   重定向STDIN            grep linuxcast < /etc/passwd
                把文件信息传递给命令
      
    • 管道

            |   将一个命令的STDOUT        ls -l |greo linuxcast
                作为另一个命令的STDIN       find / -user linuxcast | grep video
      
        注:重定向到  /dev/null 的信息都会丢弃处理
      
        管道用来组合命令    重定向用来保存信息
      

    第二节 linux命令行文本处理
    • 基于关键字信息搜索

        命令grep用以基于关键字搜索文本
      
        grep 'linuxcast' /etc/passwd
      
        find / -user linuxcast |grep Video
      
        -i  搜索忽略大小写 
        
        -n  显示结果所在行数
      
        -v  输出不带关键字的行
      
        -Ax 在输出的时候包含结果所在行之后的指定行数    x为行数
      
        -Bx 在输出的时候包含结果所在行之前的指定行数    x为行数
      
    • 基于列处理文本

        命令cut用以基于列处理文本内容
      
        cut -d: -f1 /etc/passwd     使用:作为分割符将passwd文件处理为列 然后显示第一列
        
        grep linuxcast /est/passwd |cut -d: -f3
      
        -d  指定分割字符(默认是TAB)
      
        -f  指定输出的列号
      
        -c  基于字符进行切割
            cut -c2-6 /etc/passwd   只显示第二到第六个字符
      
    • 文本统计

        命令wc用以统计文本信息
      
            wc linuxcast
      
        -l  只统计行数
      
        -w  只统计单词
      
        -c  只统计字节数
      
        -m  只统计字符数
      
    • 文本排序

        命令sort用以对文本内容进行排序       不支持中文
      
            sort    linuxcast
      
        -r  进行倒序排序
      
        -n  基于数字进行·排序
      
        -f  忽略大小写
      
        -u  删除重复行
      
        -t c    使用c作为分隔符分割为列进行排序
      
        -k x    当进行基于指定字符分割为列的排序时 指定基于哪个列排序 x为数字
      
    • 删除重复行

        命令sort -u 可以用以删除重复行
      
        命令uniq用以删除重复的相邻行    默认只能删除相邻重复行
      
    • 文本比较

        命令diff用于比较两个文件的区别
      
        diff linuxcast linuxcast-new
      
        -i  忽略大小写
      
        -b  忽略空格数量的改变
      
        -u  统一显示比较信息(一般用以生成patch文件,补丁文件)
      
            diff -u linuxcast linuxcast-new > final.patch   将文件区别做成补丁文件
      
    • 检查拼写

        命令aspell用来检查英文拼写
      
            aspell check linuxcast
            
            aspell list <linuxcast 
      
    • 处理文本内容

        命令tr用于处理文本内容
      
        删除关键字
      
            tr -d'TMD' < linuxcast
      
        转换大小写
      
            tr 'a-z' 'A-Z' < linuxcast
      
    • 搜索替换

        命令sed用来搜索并且替换文本   
      
            sed 's/linux/unix/g' linuxcast  将linux字符替换为unix
      
            sed '1,50s/linux/unix/g' linuxcast
      
            sed -e 's/linux/unix/g' -e 's/nash/nash_su/g' linuxcast
      
            sed -f sededit linuxcast
      
      
        单引号之间为正则表达式   将linux字符替换为unix   /g为全局替换   s指定行数
      

    相关文章

      网友评论

          本文标题:Linux-A-基础-第6章-管道,重定向及文本处理

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