テスト効率が倍増!shell高次コマンド早くget下へ!

4045 ワード

背景
現在、ほとんどのプロジェクトはLinuxシステムに配備されており、テストとしてよく使われるLinuxコマンドを身につけるには必須のスキルです.何年も働いている多くのテスト担当者は、ls、cd、catなどの簡単なコマンドしかできません.これらのコマンドは、仕事に対処できるほとんどのシーンです.しかし、本当にテストの効率を高め、自分の核心競争力を高めるには、これらはまだ十分ではありません.テスト作業では、分析/統計ログ、自動化導入など、テキストファイルと付き合う必要がある場合が多いので、今日は実用的な高次テキスト処理コマンドをいくつか紹介します.
cut
このコマンドの主な役割は、コンテンツの中で取得したいものを選択することです.通常、選択情報は「行」と分析され、「文字間隔で」テキストの内容を処理するのが得意です.構文の形式:
$ cut -c     
$ cut -d “    ” -f fields  

パラメータ
説明
-c
文字単位で分割
-d
カスタム区切り文字、デフォルトはタブ
-f
-dとともに使用し、どの領域を表示するかを指定します.
例:新しい練習ファイルを作成します.内容は次のとおりです.
[root@localhost shellTest]# cat test.txt 
01 nick 20
02 rose 25
03 jack 30
04 tom 27

1、各行の4文字目以降の内容を表示する
[root@localhost shellTest]# cut -c 4- test.txt 
nick 20
rose 25
jack 30
tom 27
#  :
# 4-     4     
# 4-10     4     10   
# -4      4   

2、「空白文字」を区切り文字として、2列目の内容を表示する.
[root@localhost shellTest]# cut -d " " -f 2 test.txt 
nick
rose
jack
tom

sort
ファイルの各行を単位として、互いに比較し、比較原則は先頭文字から後ろに、順にASCIIコード値に従って比較し、最後に昇順に出力します.構文の形式:
$ sort [-nrtk] [file]  

パラメータ
説明
-n
純粋な数字で並べ替えられますが、デフォルトでは文字の形で並べ替えられます.
-r
逆ソート
-t
区切り文字、デフォルトはtabキーで区切ります
-k
その区間でソートする
例:上記のtestに従う.txtファイル1は、空白文字を区切り文字として、2列目の内容を昇順に並べ替える
[root@localhost shellTest]# sort -t " " -k 2 test.txt
03 jack 30
01 nick 20
02 rose 25
04 tom 27

2、空白文字を区切りとして、3列目の年齢フィールドを降順に並べる
[root@localhost shellTest]# sort -t " " -k 3 -nr test.txt
03 jack 30
04 tom 27
02 rose 25
01 nick 20
#   :
#          ,       n
#   sort     ,   r      

uniq
ファイル内の重複部分をフィルタし、sortと組み合わせて(重複データが隣接する)構文フォーマットをよく使用します.
$ uniq [-icu]

パラメータ
説明
-i
大文字と小文字の違いを無視
-c
テキスト行の出現回数
-u
重複しない行のみ表示
例:新規テキストファイルは次のとおりです.
[root@localhost shellTest]# cat test2.txt 
01 nick 20
02 tom  25
03 jack 30
04 rose 25
03 jack 30

1、名前の重複を除去するデータはsortソートとuniqの重複を結合する(重複するデータが隣接することを前提とする)
[root@localhost shellTest]# sort test2.txt | uniq
01 nick 20
02 tom  25
03 jack 30
04 rose 25

2、1行あたりの出現回数を統計する
[root@localhost shellTest]# sort test2.txt | uniq -c
      1 01 nick 20
      1 02 tom  25
      2 03 jack 30
      1 04 rose 25

wc
統計ファイルの中に何行、何単語、何文字の文法フォーマットがありますか.
$ wc [-lwm]

パラメータ
説明
-l
行数のみ表示
-w
どれだけの単語(英語の単語)をリストしますか?
-m
文字数
例:test 2.txtファイル例1、統計ファイルの行数
[root@localhost shellTest]# wc -l test2.txt
5 test2.txt

2、統計文字数
[root@localhost shellTest]# wc -m test2.txt
55 test2.txt

総合例
上のdemoでは、これらのコマンドの基本的な使い方を紹介しています.次に、実戦例のドメイン名の情報を次のように書いてみましょう.ドメイン名を取り出してカウントし、ドメイン名の出現回数に応じて降順に並べ替えます.
[hhy@localhost shellTest]$ cat domain.txt 
http://www.lemfix.com/index.html
http://www.lemfix.org/1.html
http://post.lemfix.org/index.html
http://mp3.lemfix.org/index.html
http://www.lemfix.org/3.html
http://post.lemfix.org/2.html

手順分解:1、先にドメイン名を分離する
[hhy@localhost shellTest]$ cut -d "/" -f 3 domain.txt 
www.lemfix.com
www.lemfix.org
post.lemfix.org
mp3.lemfix.org
www.lemfix.org
post.lemfix.org

2、比較並べ替え
[hhy@localhost shellTest]$ cut -d "/" -f 3 domain.txt | sort 
mp3.lemfix.org
post.lemfix.org
post.lemfix.org
www.lemfix.com
www.lemfix.org
www.lemfix.org

3、各行の出現回数を統計する
[hhy@localhost shellTest]$ cut -d "/" -f 3 domain.txt | sort | uniq -c 
      1 mp3.lemfix.org
      2 post.lemfix.org
      1 www.lemfix.com
      2 www.lemfix.org

4、第一列のフィールド(数字)によって降順に並べ替える
[hhy@localhost shellTest]$ cut -d "/" -f 3 domain.txt | sort | uniq -c | sort -k 1 -nr
      2 www.lemfix.org
      2 post.lemfix.org
      1 www.lemfix.com
      1 mp3.lemfix.org