文本處理wc,cut,sort,uniq,diff,patchwcab

轉載於:  http://11259394.blog.51cto.com/11249394/1748932   


wc:  

        wc [OPTION]... [FILE]...

     -l : 行數

     -w : 單詞數

     -c :字節數

        練習:查看passwd文件中有多少行

          wc -l /etc/passwd

cut:  

  cut OPTION... [FILE]...

       -d : CHAR: 以指定的字符爲輸入分隔符;默認爲空白字符;

       -f : FILEDS:挑選出的字段;

        -f# : 指定的單個字段

            -f#,# : 離散的多個字段;例如1,3,7

        #-# :連續的多個字段

 --output-delimiter= : 輸出分隔符

        練習:取出/etc/passwd下以冒號分隔的第三個和第五個字段

         cut -d: -f 1,5 /etc/passwd


awk:

  awk -F CHAR '{print $1,$2,...}' file...

  awk -F : /PATTERN/'{print $1,$2}' /etc/passwd

          -F:指定輸入分隔符

awk -F: /'^root\>/{print $3}' /etc/passwd


sort:

  sort  [OPTION]...[FILE]...

    -r : 降序排序 

    -u : 相同的行只保留一次

            -t : 指定分隔符

   -k# : 用於做排序比較的字段

    -n : 以數值大小進行排序

    -f : 比較時忽略字符大小寫

 

uniq:

    uniq [OPTION]...[INPUT[OUTPUT]]

    -d,--repeated:僅顯示重複的行(連續的兩行重複纔算重複)

    -u,--unique;僅顯示不重複的行

    -c,--count;在每行行首顯示其出現的次數

diff:

    diff [OPTION]...FILES

    -u:顯示上下文默認三行


     注: oldfile是原文件 newfile是修改後的文件 PATCH_FILE是生成的補丁文件

    diff /path/to/oldfile /path/to/newfile > /PATH/TO/PATCH_FILE


patch命令:

    patch [-d dir] [-i pathfile] [-p num] [file]

    -i /PATH/FROM/PATCH_FILE :指明補丁文件路徑 把舊的變成新的

    -R or --reverse :還原  把新的變成舊的


     注:給原文件打補丁,成爲修改之後的新文件

    patch -i /PATH/TO/PATCH_FILE /path/to/oldfile

     注:給新文件打補丁,還原成老文件

   patch -R /path/to/newfile < /PATH/FROM/PATCH_FILE

bash腳本編程之算數運算:

    +,—

    *,/

    %:取餘

    **:次方

算數運算格式:

    let VAR=算數表達式

    VAR=$[算數表達式]

    VAR=$((算數表達式))

    VAR=$(expr $ARG1 $OP $ARG2)

    注:OP含義爲運算符;第四種方式空格必須不能省;乘法符號在第四種裏面需要轉義


練習1:

    求/etc/passwd文件中的root、daemon和shutdown三個用戶的id之和;

#!/bin/bash
#
second=`grep -E "^(root|daemon|shutdown)" /etc/passwd | cut -d: -f 3 | head -n 2 | tail -1`
first=`grep -E "^(root|daemon|shutdown)" /etc/passwd | cut -d: -f 3 | head -n 1`
third=`grep -E "^(root|daemon|shutdown)" /etc/passwd | cut -d: -f 3 | tail -1`
let var=$second+$first+$third
echo $var


練習2:

    (1) 求/etc/fstab、/etc/grub2.cfg和/etc/issue文件的行數之和;

     (2) 求上述三個文件中的總空白行數;


#!/bin/bash
#
a=`wc -l /etc/fstab | cut -d" " -f 1`
b=`wc -l /etc/grub2.cfg | cut -d" " -f 1`
c=`wc -l /etc/issue | cut -d" " -f 1`
let d=$a+$b+$c
echo $d


grep "[[:space:]]*\>" /etc/fstab | wc -c    得出總共有多少個空格



本文出自 “11249394” 博客,請務必保留此出處http://11259394.blog.51cto.com/11249394/1748932


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章