• 02、重定向和管道符


    一、重定向

        程序 = 指令 + 数据

          (命令)(变量)

        在程序中,数据如何输入?又如何输出?

        数据输入:键盘 -- 标准输入,但是并不是唯一输入方式;

             --stdin

             echo "123456"|passwd -- stdin "username"不进入交互界面

             例如:功能添加用户 useradd.sh user.txt文本文档1000个用户

                  ./useradd.sh a

                  ./useradd.sh b

                  ...

                  ./useradd.sh < user.txt

             while line;do

                循环体 $line

             done < /etc/passwd

        数据输出:显示器 -- 标准输出,但是并不是唯一输出方式

             ls /etc/ >a.txt

        fd文件标识符  0-9  -- 相当于给文件分类;

            0  1  2

            0 -- 标准输出

            1 -- 标准输入

            2 -- 错误输入输出(标准错误)

        常见重定向符号

            1、标准输出

              >  覆盖重定向、非常危险

                  set -C :取消覆盖重定向功能   +C

                  >|  强制重定向

              >>  追加重定向

                  不覆盖

            2、标准输入

              <    tr 替换文件内容

                  tr    set1 [set2]  <file.txt

              <<  将多行数据同时输入

                  cat >> a.txt <<EOF

                   >1

                   >2

                   >3

                   >EOF

            3、错误输出

              2>  2>>

              扩展:不需要输出内容,只需要输出状态

                  ls  /etc/  >  /dev/null

                  if [ $? -eq 0 ];then

                    循环体

                  fi

              ls > /dev/null 2> /dev/null

              &> &>>  == 2& > 1

                  ls  /etc/  &>  /dev/null

    二、管道 - tee

        command1 | command2 | command3 | ... ...

        前一个命令的执行结果交给后一个命令执行;

        【Linux思想:结合小功能实现大功能】

        free - m | grep "^Men" | cut -d' ' -f19

        free - m | grep "^Men" | awk '{print $3}'

     

        tee   一路输入    俩路输出

            tee  /tmp/tee.out  //如果没有文件,会创建,默认如果文件存在且有内容,会覆盖;

     

        练习:将/etc/passwd文件中的前5行内容转换为大写保存至/tmp/passwd.out文件中;

              head -5 /etc/passwd | tr [a-z] [A-Z] > /tmp/passwd.out

             将登录至当前系统上用户信息汇总的后三位信息转换为大写后保存至/tmp/who.out

              who | tail -3 | cut -d' ' -f1 | tr [[:lower:]] [[:upper:]]  tee /tmp/who.out

        

        tail  查看文件尾部多少行(默认十行)

            -n  tail -n 5 /etc/passwd == 简写  tail -5 /etc/passwd

            -f   实时查看文件更新内容

                tail -f /var/log/message

        head     查看文件头部多少行(默认十行)

            -n  #  前#行,简写   -#

        取10-20行:head  -20  /etc/passwd | tail  -10

    三、文本处理工具 - wc、cut、sort、uniq

        wc

            word count 统计文本文件中的字符个数

            用法:wc filename

            行数  字符个数  大小(字节)  文件名

              -l      -w      -c

        cut

            用来做文件分隔

            -d  指定分隔符(delimiter)

                -d[:]

            -f  指定输出的列数据:

                -f2

                -f1-3

                -f1,3

            --output-delimiter=='xx'

            【cut的局限性:1、-d指定分隔符,不能同时指定多个  2、不能做高级的格式化输出;所以我需要熟练掌握awk】

        sort

            常用参数:

                -r  逆序

                -f  忽略字符的大小写

                -t  DEDLIMITER指定字段分隔符

                -k  #已指定字段的第几段进行排序

                -n  指定以数值大小进行排序

                -u  uniq排序取出重复,重复的不现实

            排序,默认查看第一个字符(包括数字字母以及空格和特殊字符),以ASCII码来排序(大小写不是)

          uniq

              连续且相同的命令,才被视为重复

              【建议,先排序,后去重】

              -c  统计某些字符重复的个数

              sort filename  |  uniq -c

              -d  重复多少行

  • 相关阅读:
    HDU 5045 5047 5050 5053(上海网络赛E,F,I,L)
    Xcode 5、Xcode 6 免证书真机调试
    Ubuntu打开终端的方法三种
    JAVA异常处理机制
    Java多线程之~~~~synchronized 方法
    iphone开发技术要学习的内容
    表达式求值(数据结构书上栈的应用之中的一个)
    Java学习篇之---json-lib(Maven)
    Nginx 笔记与总结(16)nginx 负载均衡
    SPSS数据记录的选择(Select Cases)
  • 原文地址:https://www.cnblogs.com/cnxy168/p/11317302.html
Copyright © 2020-2023  润新知