テキスト処理wc,cut,sort,uniq,diff,patwcab


転載先: http://11259394.blog.51cto.com/11249394/1748932   
wc: 
        wc[OPTTION]…[FILE]…
     -l: 行数
     -w: 単語数
     -c:バイト数
        練習:passwdファイルの中に何行があるかを確認します。
          wc -l /etc/passwd
cut: 
  cut OPTTION…[FILE]…
       -d: CHAR:指定された文字を入力区切りとします。デフォルトは空白文字です。
       -f: FILEDS:選択したフィールド;
        -f(※:指定された単一フィールド
            -f((xi),舸:離散的な複数のフィールド;例えば1,3,7
        #-# :連続する複数のフィールド
 --out put-delimiter=:出力セパレータ
        練習:取り出し/etc/passwdでコロンで区切られた3番目と5番目のフィールド
         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:
  ソフト [OPTTION]…[FILE]…
    -r:降順並べ替え 
    -u: 同じ行を一回だけ残してください。
            -t:セパレータを指定する
   -k葃(登録商標):並べ替えの比較をするためのフィールド
    -n:数値サイズで並べ替えます。
    -f:比較時に文字の大文字と小文字を無視する
 
uniq:
    uniq[OPTTION]…[INPUT[OUTUT]
    -d,--repeated:重複した行のみを表示します。
    -u,--unique;重複しない行のみを表示します。
    -c,--count;行の先頭に表示する回数
diff:
    diff[OPTTION]…FILES
    -u:コンテキストを表示するデフォルトの3行
     注: 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 VER=演算式
    VER=$[演算式]
    VER=$((演算式)
    VER=$
    注:OPは演算子を意味します。第四の方法では、スペースは省けないこと。乗算記号は4つ目の中で変換が必要です。
練習1:
    etc/passwdファイルの中のroot、daemonとshutdownの3つのユーザーの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/grub 2.cfgと/etc/issueファイルの行数の合計を求める。
     (2)上記3つのファイルの総空白行数を求めます。
#!/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