zoukankan      html  css  js  c++  java
  • Linux入门基础(五):Linux管道,重定向,文本处理

    多命令协作:管道及重定向

    • 在Linux中,大多数命令都很简单,每个命令往往只实现一个或几个很简单功能.
    • 我们可以通过将不同功能的命令组合起来一起使用,达到完成某个复杂功能的目的
    • CLI下几乎所有的命令返回的都是纯文本,纯文本形式的数据又是绝大多数命令的输入格式

    命令行shell的数据流有以下定义 :

    名称 说明 编号 默认
    STDIN 标准输入 0 键盘
    STDOUT 标准输出 1 终端
    STDERR 标准错误 2 终端

    命令通过STDIN接收参数,通过STDOUT输出结果或STDERR输出错误

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

    分类 关键字 定义 例子
    重定向 > 将输出重定向到文件(覆盖) echo 'aaa' > fileName
    重定向 >> 将输出重定向到文件(追加) echo 'aaa' >> fileName
    重定向 2> 将错误重定向到文件(覆盖) ls nothere 2> fileName
    重定向 2>&1 将错误和输出结合重定向到文件 ls nothere 2>&1 fileName
    重定向 < 重定向输入 grep admin < /etc/passwd
    管道 | 将一个命令的输出作为另一个命令的输入 ls -l | grep aaa

    文本处理

    文件浏览

    • cat 查看文件内容
    • more 以翻页形式查看文件内容(只能向下翻页)
    • less 以翻页形式查看文件内容(能上下翻页)
    • head 查看文件的开始10行(或指定行数)
    • tail 查看文件的结束10行(或指定行数)

    基于关键字搜索

    命令grep用以基于关键字搜索文本

    例如

    #在/etc/passwd 中搜索'aaaa'项
    grep 'aaaa' /etc/passwd   
    #管道传值搜索
    find / -user admin | grep Video 等于 grep Video (find的输出结果)
    

    -i 在搜索时忽略大小写

    -n 显示结果所在行数

    -v 输出不带关键字的行,排除选项

    -Ax 在输出的时候包含结果所在行之后的指定行数

    -Bx 在输出的时候包含输出结果前几行

    基于列处理文本

    命令cut用以基于列处理文本内容

    例如

    #修剪指定列,显示passwd到位第1列,指定分隔符是‘:’
    cut -d: -f1  /etc/passwd  
    #输出admin的信息,指定分隔符是:,并显示第3列
    grep admin /etc/passwd | cut -d: -f3 
    #只显示第2到第6个字符
    cut -c2-6 /etc/passwd 
    

    -d 指定分隔符

    -f 指定输出列

    -c 基于字符进行切割

    文本统计

    命令wc用以统计文本信息

    -l 只统计行数

    -w 只统计单词

    -c 只统计字节数

    -m 只统计字符数

    文本排序

    命令sort对文本内容进行排序

    -r 进行倒序排序

    -n 基于数字进行排序

    -f 忽略大小写

    -u 删除重复行

    -t c 使用c作为分隔符分割为列进行排序

    -k x 当进行基于指定字符分隔为列的排序时,指定基于那个列排序

    删除重复行

    命令sort -u 可以用来删除重复行

    命令uniq用来删除重复的相邻行

    文本比较

    命令diff用以比较两个文件的区别

    例如

    #比较两个文件的区别
    diff linux linux-new
    #比较差异并生成文件
    diff -u linux linux-new > final.patch
    

    -i 忽略大小写

    -b 忽略空格数量的改变

    -u 统一显示比较信息[一般用以生成patch补丁文件]

    拼写检查

    命令aspell用以显示检查英文拼写

    处理文本内容

    命令tr用以处理文本内容

    • 删除关键字

      tr -d '敏感词' < linux

    • 转换大小写

      tr 'a-z' 'A-Z' < linux

    搜索替换

    命令sed用以搜索并替换文本

    sed '正则表达式' 文件

    例如

    #将名为passwd文本里的cat替换成ac, g代表替换所有 
    sed 's/cat/ac/g' passwd 
    
  • 相关阅读:
    字节流 数据报 原始套接字
    付宝研究员王益:“对我影响最大的三本编程书”
    e^π和π^e谁大的问题
    https://stackoverflow.com/questions/3232943/update-value-of-a-nested-dictionary-of-varying-depth
    计算机 人造学科
    位域 内存对齐
    LeetCode上并发题目无Go版本:台湾同胞试水 — 交替打印FooBar
    a
    Hash-based .pyc Files
    Most basic operations in Go are not synchronized. In other words, they are not concurrency-safe.
  • 原文地址:https://www.cnblogs.com/FromZeroToGod/p/10676798.html
Copyright © 2011-2022 走看看