[Linux]パイプ操作のコマンド

9268 ワード

パイプコマンド
command1 | command2 | command3
注意:パイプコマンドは、前のコマンドからのデータを受け入れてstandard inputとして処理を続行する必要があります.
 
Cutは,ある情報のあるセグメントを切り出し,処理する情報は行為単位である.
cut -d '    ' -f fields

cut -c     

パラメータ:
-d:後に区切り記号を付け、-fと一緒に使用します.
-f:-dの区切り記号に基づいて1段の情報を数段に切断し、-fで数段目の意味を取り出す.
-c:固定文字区間を文字(characters)単位で取り出す.
echo $PATH | cut -d ':' -f 3-5

// path    ':'    ,    3 5  

export | cut -c 12-

// export       ,      12        

 
grepは1行の情報を分析し、一致するものがあれば、その行を取り出します.
grep [-acinv] [--color=auto] '     ' filename

パラメータ:
-a:binaryファイルをtextファイルでデータを検索します.
-c:「検索文字列」が見つかった回数を計算します.
-i:大文字と小文字の違いを無視する;
-n:行番号付き;
-v:逆選択で、「文字列の検索」のない行が表示されます.
--color=auto:検索したキーワードの部分に色表示を付けることができます
export | grep -in --color=auto 'bin'

//  export     bin  ,  bin    ,      ,    。

 
sortは、異なるデータ型に基づいてソートすることができる.
sort [-fbMnrtuk] [file or stdin]

パラメータ:
-f:大文字と小文字を無視
-b:一番前のスペースを無視
M:月の名前で並べ替えます.JAN、DECなどです.
-n:数値を使用してソートします(デフォルトは文字タイプでソートされます).
-r:逆ソート
-u:uniq、同じデータ、1行の代表しか現れません
-t:区切り記号、デフォルトは[タブ]で分割
-k:どのfiledでソートしますか.-tに関連します.
cat /etc/passwd | sort -t ':' -k 3 -n

//   passwd   , ':'        ,   3               。

 
Uniqで繰り返される行は1つのみ表示されます
uniq [-ic]

パラメータ:
-i:大文字小文字は無視
-c:カウント
last | cut -d ' ' -f1 | sort | uniq -c

//       ,     ,      ,   。

 
wc出力情報の全体データ
wc [-lwm]

パラメータ:
-l:列移動のみ
-w:どれだけの文字しかリストされていません(英語の単語)
-m:文字数
cat /etc/man.config | wc

//      ,     ,  ,   

 
teeは二重配向し,ファイル/デバイスに格納しながら画面に出力して処理を継続する.
tee [-a] file

パラメータ:
[-a]:ファイルに累積(append)で出力します.
ls -l / | tee -a file.list | more

//        file.list ,   more       。

 
tr情報中の文字を削除したり、文字情報の変換を行ったりします.
tr [-ds] XXX ...

パラメータ:
-d:情報中のXXXという文字列を削除する
-s:重複する文字を置換
last | tr '[a-z]' '[A-Z]'

// last                   

 
col特殊文字の処理
col [-xb]

パラメータ:
-x:tabキーを対等のスペースキーに変換
-b:文字内にスラッシュ(/)がある場合は、スラッシュの最後に続く文字のみを保持します.
cat /etc/man.config | col -x | cat -A | more

// /etc/man.config    [tab]    ,   。

 
joinは2つのファイルに同じデータがある行を加算します.
join [-ti12] file1 file2

パラメータ:
-t:joinはデフォルトでデータをスペースで区切り、「最初のフィールド」のデータと比較します.2つのファイルが同じ場合は、2つのデータを1行に接続し、最初のフィールドを最初のフィールドに配置します.
-i:大文字小文字は無視
-1:(数値1)最初のファイルを比較するフィールド
-2:2番目のファイルを比較するフィールド
join -t ':' -1 4 /etc/passwd -2 3 /etc/group

//    ':'    ,       4   ,       3   ,    。

 
pasteは2つのファイルを貼り合わせ、真ん中を[tab]キーで隔てます.
paste [-d] file1 file2

パラメータ:
-d:後に区切り記号を付けることができます.デフォルトは[tab]で区切ります.
-:file部分が-、standard inputからのデータを表す
cat /etc/group|paste /etc/passwd /etc/shadow - |head -n 3

//  /etc/group  ,   /etc/passwd /etc/shadow          ,       。

 
expand[tab]ボタンをスペースキーに変更
expand [-t] file

パラメータ:
-t:後に数字を付けることができます.tabを表すにはいくつかのスペースで表します.
 
xargsはstdinのデータを読み込み、スペースまたは断行で分解し、stdinのデータをargumentsに分割する.
xargs [-0epn] command

パラメータ:
-0:入力したstdinに`,,スペースキーなどの特殊文字が含まれている場合、このパラメータは一般文字に復元できます.
-e:EOF(end of file)という意味で、後ろに文字列を付けることができます.xargsがこの文字列を分析すると、作業を停止します.
-p:各コマンドのパラメータを実行すると、ユーザーの意見が聞かれます
-n:後続回数
cut -d ':' -f1 /etc/passwd | xargs -p -e'lp' finger

//   lp      ,     stdin     xargs    。

例を挙げる
フォルダの下のjavaコードのファイル数を統計したい場合は
find [folderPath] -name "*.java" | wc -l

もし私がjavaコードの行数をすべて検索したいなら?
wc-l filenameは単一ファイルの行数をクエリーできるのでxargsを使用できます.
find [folerPath] -name "*.java" | xargs wc -l

空白行を削除するには
find [folderPath] -name "*.java" |xargs cat| grep -v ^$|wc -l