*****************6.文件命令********************
## 1.diff ##
diff     file file1         //比较两个文件的不同
     -c                     //显示不同的行
     -u                     //按照统一格式统一输出生成补丁
     -r                     //比较两个目录中文件的不同
patch    file file.patch    //打补丁
      -b                    //备份原文件

wKiom1gi_6LQSGI6AADhf5wU-Vg773.png

wKiom1gi_6PyCZ2fAADslq8zfTk463.png


## 2.grep ##
grep 关键字符 文件|目录     //在文件或目录中查找含有关键字的行
grep  -i                    //忽略大小写
     
-n                    //显示关键字所在行

      -c                    //显示过滤结果的个数
      -v                    //反向过滤
      -E                    //“关键字1|关键字2“ 过滤多个关键字
      -r 目录               //在目录中查找含有关键字的文件
注意: ^关键字              //以关键字开头的
       关键字$              //以关键字结尾的

例:在passwd文件中搜索含有root的行,并忽略大小写

wKioL1gjAHSDGF73AAAxST6kYZs114.png

在passwd文件中搜索含有root的行,并显示行号

wKiom1gjAHSQ7jmkAAAm-tkZK7A618.png

在passwd文件中统计含有root的行的个数

wKioL1gjAHTweVEfAAAJarRiOXo867.png

在passwd文件中搜索含有root的行,且root不在行首

wKioL1gjAHWzl-QuAAAZP5-5THg051.png

在passwd文件中搜索含有root或student的行

wKiom1gjAHbhQExaAAAgUHmRs1I546.png

在/mnt中搜索含有root的文件

wKioL1gjAHegW0AgAAAx36Jiszg703.png

## 3.sort ## 排序
sort   -n                   //纯数字排序
       -u                   //去掉冗余
       -t                   //指定分割符
       -k                   //指定列
            |uniq -c        //去除冗余,并统计冗余个数
            |uniq -d        //显示冗余行
            |uniq -u        //显示唯一行

例:对file文件纯数字排序并去掉冗余

wKiom1gjAe7QeW_5AAAPddxtwHA219.png

对file文件纯数字排序并去掉冗余并统计冗余个数

wKiom1gjAe7wJewGAAASEL6yw0U179.png

对file文件以:作为分隔符对第二列做纯数字排序

wKioL1gjAe7S5rHpAAAT5jrA6s0999.png

对file文件以:作为分隔符显示第二列冗余行

wKioL1gjAe2A_Gq-AAASV17P2lc550.png

对file文件以:作为分隔符对第二列做纯数字排序去掉冗余并统计冗余个数

wKioL1gjAe-D22zyAAAlzwr4qaQ499.png

对file文件以:作为分隔符显示第二列唯一行

wKiom1gjAfDBnRnUAAAe8ko5584276.png

## 4.cut ##

cut                         // 截取字符
     -d 分隔符              //指定分隔符
     -f 1,7                //显示指定的列

     -c 1-4                 //显示指定的字符

## 5.sed ##

tr ‘a-z’ ‘A-Z’ file                   //转换大小写


sed   's/原字符/替换字符/g'   file        //替换
      -e '策略1'  -e '策略2'  file        //多个策略一起替换
      -i file                             //把转换后的内容输入到指定文件
      '3,5s/原字符/替换字符/g' file      //转换3-5行
       5d file                            //屏蔽第五行
       5p file                            //复制第五行
       -n 5p file                         //只显示第五行

例:把passwd文件全部转换成大写

wKiom1gjBLWQLgclAAA9Xp6NX-s775.png

例:把passwd全文的root都替换成student

wKioL1gjBLajAGqkAAB_eeTNQwM811.png

例:把passwd全文的root都替换成student并把所有的mail都替换成hello

wKioL1gjBLfD75cNAACKa8e7Oiw024.png

例:把passwd的3-5行的nologin替换成root

wKioL1gjBLjgBYQ9AAB4j6YMcVw463.png

例:查看passwd文件并复制第五行


wKioL1gjBbDRFtFrAABtob37zog507.png

例:查看passwd文件只显示第五行

wKioL1gjBbXhiJpTAAAb-uxsxxQ609.png

## 6.awk ##

awk '{pattern + action}' {filenames}

 pattern 表示 AWK 在数据中查找的内容,而 action 是在找到匹配内容时所执行的一系列命令。



练习,现有两个文件分别放有待创建的用户的用户名和用户密码

使用脚本创建这些用户


wKiom1gjBbbRkPIeAABWL9Lorec878.png