天天看点

ii第六单元 文本处理工具

linux中常用的基础命令

diff 命令

patch 命令

grep 命令

Cut 命令

sort 命令

uniq 命令

tr 命令

sed 命

1.diff 命令 比较两个文件的不同 用于创建补丁文件

diff -u file file.new >file.path  ##生成补丁文件

yum install patch -y         ##安装打补丁工具

(1)patch -b file file.path    ##给老文件件打补丁,并且对老文件进行备份

补丁版替换原始文件 , 但当指定 -b 选项时 , 可以制作备份。将用 .orig 文件名后缀

重命名原始文件

   17 vim file ##建立file

   18 vim file1##建立file1

   19 cat file  ##查看file

   20 cat file1 ##查看file

   21 diff file file1   ##比较两个文件的不同 

   22 diff -c file file1 ## -c 显示上下文周围的行

   23 diff -u file file1 ## -u 使用统一的输出格式

   24 diff -u file file1 > file.path ##创建补丁文件

   25 cat file.path    ##查看补丁文件

   26 yum install patch -y  ##安装打补丁工具

   27 patch file file.path ##给文件打补丁,文件在前,补丁文件在后

   28 cat file          ##查看文件 

   34 ls 

   40 vim file

   41 patch -b file file1 

   42 patch -b file file.path  ##给老文件件打补丁,并且对老文件进行备份

   43 ls

   44 cat file.orig 查看备份文件

   45 cat file 查看新文件

   46 history

<a href="https://s2.51cto.com/wyfs02/M01/93/51/wKiom1kJ_z_D6Fa_AACy--2bwlo588.png-wh_500x0-wm_3-wmp_4-s_2018294973.png" target="_blank"></a>

<a href="https://s2.51cto.com/wyfs02/M01/93/4F/wKioL1kJ_z-wbB2aAADx_u_WvjE204.png-wh_500x0-wm_3-wmp_4-s_3971941389.png" target="_blank"></a>

<a href="https://s4.51cto.com/wyfs02/M01/93/4F/wKioL1kJ_0DylUOrAABfprKXF7o127.png-wh_500x0-wm_3-wmp_4-s_4062600473.png" target="_blank"></a>

<a href="https://s4.51cto.com/wyfs02/M02/93/51/wKiom1kJ_0CCniXpAACZiP6HSWw121.png-wh_500x0-wm_3-wmp_4-s_3871571878.png" target="_blank"></a>

(2)patch 可用于将简单的补丁文件应用于使用以下语法的单个文件

– [root@host etc]# patch issue patchfile

Patching file issue

(3)以下命令显示如何使用通过 diff -Naur 创建的补丁文件。用户更改为

与从中创建补丁文件的原始目录相似的可比较目录后 , 将执行patch

– [user@host orig-dir]$ patch -b &lt; /tmp/patchfile

Patching file hosts

Patching file network

2.grep命令 

grep 将显示文件中与模式匹配的行。

grep        -i              ##忽略大小写

        -v              ##反向过滤

        -E "关键字1|关键字2|....." ##过滤多个关键字

    1  cd/mnt/

    2 ls

    3 cp /etc/passwd  /mnt/ ##将/etc/passwd复制到/mnt

   22 vim passwd    ##编辑passwd文本

   23 cat passwd    ##查看passwd文本

   24 grep -i test passwd  ##显示文件中含有test的行,忽略test大小写

   25 grep test passwd  ##显示文件中含有test的行

   26 grep -i test passwd -v ##显示文件中不含有test的行,忽略test大小写

   27 grep -E "TEST|root" passwd ##显示文件中含有TEST或root"的行

   28 grep -E "test|root" passwd##显示文件中含有test或root的行

   29 grep -E "test|ROOT" passwd##显示文件中含有test或ROOT的行

   30 grep -E "^test|ROOT" passwd##显示文件中行首是test或含有ROOT的行

   31 grep -E "test|ROOT$" passwd##显示文件中含有test或行尾是ROOT的行

   32 grep -E -i "^test|ROOT" passwd

    ##显示文件中行首是test或含有ROOT的行,忽略大小写

   33 grep test passwd  | grep -i testpasswd -v

    ##显示文件中不含有test的行,忽略test大小写

   34 grep test passwd  | grep -E  "^test|root$" -v

   显示文件中行首不是test或不含有root的含有test的行

   35 grep test passwd  | grep -E  "^test|test$" -v

   显示文件中行首不是test或不含有test的含有test的行

   36 grep test passwd  | grep -E  "^root|root$" -v

   显示文件中行首不是root或不含有root的含有test的行

<a href="https://s2.51cto.com/wyfs02/M01/93/51/wKiom1kJ_33AujzyAAAlaiBrxXA090.png-wh_500x0-wm_3-wmp_4-s_1370561394.png" target="_blank"></a>

<a href="https://s5.51cto.com/wyfs02/M01/93/4F/wKioL1kJ_37zWcp6AAEUZlxJ0vU387.png-wh_500x0-wm_3-wmp_4-s_3813865905.png" target="_blank"></a>

<a href="https://s5.51cto.com/wyfs02/M00/93/51/wKiom1kJ_3_DMV3eAADoef5Kves243.png-wh_500x0-wm_3-wmp_4-s_2124185008.png" target="_blank"></a>

<a href="https://s5.51cto.com/wyfs02/M02/93/51/wKiom1kJ_3-y2SbpAACpSS6rPtk618.png-wh_500x0-wm_3-wmp_4-s_500669772.png" target="_blank"></a>

  grep -r 关键字 目录       ##在目录中过滤还有关键字的文件

       -n           ##显示结果所在行的行号

       -c           ##结果个数

 练习

提取ifconfig eth0 中的ip地址

<a href="https://s3.51cto.com/wyfs02/M02/93/51/wKiom1kJ_9_A_ZhPAADl484kCWI104.png-wh_500x0-wm_3-wmp_4-s_891589440.png" target="_blank"></a>

<a href="https://s5.51cto.com/wyfs02/M02/93/51/wKiom1kKAHHiDJVHAADLBLAOut4267.png-wh_500x0-wm_3-wmp_4-s_134941817.png" target="_blank"></a>

3.cut 命令

##-d指定用于提取字段的分隔符

##-f 指定要从每行中提取的字段

##-c 指定要从每行中提取的文本列

    2 cd /mnt/  

    3 cp /etc/passwd .  

    4 vim passwd

    5 cat passwd

    6 cut -d : -f 1,7 passwd ##剪切每行中的1和7字段,并提取字段的分隔符

    -d : -f 一起用,不能分开

    7 cut -d : -f 1,3 passwd ##剪切每行中的1和3字段,并提取字段的分隔符

    8 cut -d : -f 1-3 passwd ##剪切每行中的1到3字段,并提取字段的分隔符

    9 cut -c  1-3 passwd ##剪切每行中的1到3列文本

3.sort 排序

        -n              ##纯数字

        -r              ##倒序

        -u              ##去掉重复行

        -t              ##指定分隔符

        -k              ##指定排序的列

4.uniq 

处理重复行

        -c              ##统计重复行的个数

        -u              ##显示唯一的行

        -d              ##显示重复行

    1 vim file

    2 sort -n file  ##纯数字排序

    3 sort -rn file  ##倒序

    4 sort -rnu file ##去掉重复行

    5 sort -rn file | uniq -c ##统计重复行的个数,倒序

    6 sort -rn file | uniq -u  ##显示唯一的行,倒序

    7 sort -rn file | uniq -d  ##显示重复行,倒序

   11 vim file

   12 cat file

   13 sort -t : -k 3 -n file ## 排序分隔符分的第三列

   14 sort -t : -k 3 -n file | uniq  -c##排序分隔符分的第三列,并统计重复行的个数

   15 sort -t : -k 1 -n file | uniq  -c##排序分隔符分的第1列,并统计重复行的个数

   17 sort -t : -k 2 file | uniq -c  ##排序分隔符分的第2列,并统计重复行的个数

   18 sort -t : -k 3 -n file | uniq -u##排序分隔符分的第三列,显示唯一的行

   19 sort -t : -k 3 -n file | uniq -d##排序分隔符分的第三列,显示重复行

<a href="https://s4.51cto.com/wyfs02/M00/93/51/wKiom1kKAHLgOzqmAABlJbIArR8861.png-wh_500x0-wm_3-wmp_4-s_955547239.png" target="_blank"></a>

<a href="https://s3.51cto.com/wyfs02/M02/93/50/wKioL1kKAO2ATaVfAABTZqRgMs0302.png-wh_500x0-wm_3-wmp_4-s_3480063618.png" target="_blank"></a>

<a href="https://s4.51cto.com/wyfs02/M02/93/50/wKioL1kKAO6DE-qhAABPQP9zY6g430.png-wh_500x0-wm_3-wmp_4-s_386733471.png" target="_blank"></a>

<a href="https://s3.51cto.com/wyfs02/M00/93/50/wKioL1kKAO-jVmweAADO7I2INUs819.png-wh_500x0-wm_3-wmp_4-s_1711839005.png" target="_blank"></a>

<a href="https://s4.51cto.com/wyfs02/M02/93/50/wKioL1kKAZKRWh02AAC0WMsPGbY774.png-wh_500x0-wm_3-wmp_4-s_1248774280.png" target="_blank"></a>

5.tr 转换字符大小写

    4 vim file 

    5 cat file

    6 tr 'a-z' 'A-Z' &lt; file ##把file中所有小写字符转换成大写

    7 tr 'A-Z' 'a-z' &lt; file ##把file中所有大写字符转换成小写

    8 history

<a href="https://s1.51cto.com/wyfs02/M00/93/51/wKiom1kKAZKQXCghAABkiT_ism8798.png-wh_500x0-wm_3-wmp_4-s_691820024.png" target="_blank"></a>

6.sed   控制流输出

sed 命令是流编辑器 , 用于对文本数据流执行编辑。假定要处理一个文件名 , sed 将对文件中的所有行执行搜索和替换 , 以将修改后的数据发送到标准输出 ; 即 , 其实际上并不修改现有文件。与 grep 一样 , sed 通常在管道中

    9 cat passwd

   10 cat passwd -b &gt; westos ##将passwd中的内容输入到westos中 并且显示行数

   11 cat westos

   12  sed 's/nologin/westos/g' westos ##替换输出中的nologin为westos

   16 sed -e 's/nologin/westos/g' -e 's/sbin/lee/g' westos

        ##多条替换策略用-e连接 

   18 sed '1,3s/nologin/westos/g' westos 

       ##替换输出中1-3行的nologin为westos

   20 sed 3,7d westos  ##不显示文件中的3-7行 

   21 sed 3,7p westos  ##重复显示文件中的3-7行

   22 sed -n 3,7p westos ##只显示文件中的3-7行

   23 sed 3d westos   ##不显示文件中的第三行 

<a href="https://s1.51cto.com/wyfs02/M00/93/50/wKioL1kKAZOytfuBAADKTob8nig654.png-wh_500x0-wm_3-wmp_4-s_2833762090.png" target="_blank"></a>

<a href="https://s3.51cto.com/wyfs02/M01/93/50/wKioL1kKAi-iG9taAABmf6NyFrA675.png-wh_500x0-wm_3-wmp_4-s_4287869421.png" target="_blank"></a>

<a href="https://s4.51cto.com/wyfs02/M02/93/50/wKioL1kKAjDDgdSFAABkR0tgrQc662.png-wh_500x0-wm_3-wmp_4-s_1439437802.png" target="_blank"></a>

<a href="https://s4.51cto.com/wyfs02/M00/93/52/wKiom1kKAjDANuVVAABcyAt-WVc388.png-wh_500x0-wm_3-wmp_4-s_183868870.png" target="_blank"></a>

将修改后的数据发送到标准输出 ; 其实际上并不修改现有文件。

   27 sed -e 's/nologin/westos/g' -e 's/sbin/lee/g' westos

       ##多条替换策略用-e连接 

   28 cat westos

<a href="https://s2.51cto.com/wyfs02/M02/93/50/wKioL1kKAjHg9pUlAAC7BxbRDlU489.png-wh_500x0-wm_3-wmp_4-s_968201358.png" target="_blank"></a>

-i将输出导入westos, 修改现有文件

   30 sed -e 's/nologin/westos/g' -e 's/sbin/lee/g' -i westos

      ##多条替换策略用-e连接

   31 cat westos

<a href="https://s3.51cto.com/wyfs02/M00/93/50/wKioL1kKAjKjEh6IAABuovouLGA673.png-wh_500x0-wm_3-wmp_4-s_2242023239.png" target="_blank"></a>

   sed -ne 3p -ne 7p westos ##只显示文件中的3,7行

[root@westos mnt]# cat rule                 ##规则文件内容

s/nologin/westos/g

s/sbin/lee/g

[root@westos mnt]# sed -f rule  file            ##使用规则文件更改输出   

     1  root:x:0:0:root:/root:/bin/bash

     2  bin:x:1:1:bin:/bin:/lee/westos

     3  daemon:x:2:2:daemon:/lee:/lee/westos

     4  adm:x:3:4:adm:/var/adm:/lee/westos

本文转自 如何何如  51CTO博客,原文链接:http://blog.51cto.com/12778805/1922056,如需转载请自行联系原作者