天天看點

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,如需轉載請自行聯系原作者