Unix / Linux-パイプとフィルター
この章では、Unixのパイプとフィルターについて詳しく説明します。2つのコマンドを接続して、1つのプログラムからの出力が次のプログラムの入力になるようにすることができます。このように接続された2つ以上のコマンドがパイプを形成します。
パイプを作るには、縦棒(|)2つのコマンド間のコマンドライン。
プログラムが別のプログラムから入力を受け取ると、その入力に対して何らかの操作を実行し、その結果を標準出力に書き込みます。それはと呼ばれますfilter。
grepコマンド
grepコマンドは、特定のパターンを持つ行を1つまたは複数のファイルで検索します。構文は-
$grep pattern file(s)
名前 "grep" ed(Unixラインエディタ)コマンドから取得 g/re/p これは、「正規表現をグローバルに検索し、それを含むすべての行を出力する」ことを意味します。
正規表現は、プレーンテキスト(単語など)またはパターンマッチングに使用される特殊文字のいずれかです。
grepの最も簡単な使用法は、単一の単語で構成されるパターンを探すことです。特定の文字列を含む入力ファイルの行のみが標準出力に送信されるように、パイプで使用できます。grepに読み取るファイル名を指定しない場合、grepは標準入力を読み取ります。これがすべてのフィルタープログラムの動作方法です-
$ls -l | grep "Aug"
-rw-rw-rw- 1 john doc 11008 Aug 6 14:10 ch02
-rw-rw-rw- 1 john doc 8515 Aug 6 15:30 ch07
-rw-rw-r-- 1 john doc 2488 Aug 15 10:51 intro
-rw-rw-r-- 1 carol doc 1605 Aug 23 07:35 macros
$
と一緒に使用できるさまざまなオプションがあります grep コマンド-
シニア番号 | オプションと説明 |
---|---|
1 | -v パターンに一致しないすべての行を印刷します。 |
2 | -n 一致した行とその行番号を出力します。 |
3 | -l 行が一致するファイルの名前のみを出力します(文字「l」) |
4 | -c 一致する行の数のみを出力します。 |
5 | -i 大文字または小文字のいずれかに一致します。 |
ここで、grepに次の行を検索するように指示する正規表現を使用しましょう。 "carol"、その後にゼロまたは正規表現で「。*」と省略された他の文字が続き、その後に「Aug」が続きます。
ここでは、 -i 大文字と小文字を区別しない検索を行うオプション-
$ls -l | grep -i "carol.*aug"
-rw-rw-r-- 1 carol doc 1605 Aug 23 07:35 macros
$
並べ替えコマンド
ザ・ sortコマンドは、テキストの行をアルファベットまたは数値で配置します。次の例では、食品ファイルの行を並べ替えます-
$sort food
Afghani Cuisine
Bangkok Wok
Big Apple Deli
Isle of Java
Mandalay
Sushi and Sashimi
Sweet Tooth
Tio Pepe's Peppers
$
ザ・ sortコマンドは、デフォルトでテキストの行をアルファベット順に配置します。ソートを制御する多くのオプションがあります-
シニア番号 | 説明 |
---|---|
1 | -n 数値で並べ替え(例:10は2の後に並べ替えます)、空白とタブを無視します。 |
2 | -r 並べ替えの順序を逆にします。 |
3 | -f 大文字と小文字を一緒に並べ替えます。 |
4 | +x 最初に無視します x ソート時のフィールド。 |
3つ以上のコマンドをパイプにリンクすることができます。前のパイプの例を使用してgrep、8月に変更されたファイルをサイズ順にさらに並べ替えることができます。
次のパイプはコマンドで構成されています ls、 grep、および sort −
$ls -l | grep "Aug" | sort +4n
-rw-rw-r-- 1 carol doc 1605 Aug 23 07:35 macros
-rw-rw-r-- 1 john doc 2488 Aug 15 10:51 intro
-rw-rw-rw- 1 john doc 8515 Aug 6 15:30 ch07
-rw-rw-rw- 1 john doc 11008 Aug 6 14:10 ch02
$
このパイプは、8月に変更されたディレクトリ内のすべてのファイルをサイズ順に並べ替え、端末画面に出力します。ソートオプション+ 4nは、4つのフィールドをスキップし(フィールドはブランクで区切られます)、行を番号順にソートします。
pgおよびその他のコマンド
通常、長い出力は画面上で圧縮できますが、テキストをさらに実行したり、 pgフィルタとしてのコマンド。画面がテキストでいっぱいになると、表示が停止します。
あなたが長いディレクトリリストを持っていると仮定しましょう。ソートされたリストを読みやすくするために、出力をパイプでつなぎますmore 次のように-
$ls -l | grep "Aug" | sort +4n | more
-rw-rw-r-- 1 carol doc 1605 Aug 23 07:35 macros
-rw-rw-r-- 1 john doc 2488 Aug 15 10:51 intro
-rw-rw-rw- 1 john doc 8515 Aug 6 15:30 ch07
-rw-rw-r-- 1 john doc 14827 Aug 9 12:40 ch03
.
.
.
-rw-rw-rw- 1 john doc 16867 Aug 6 15:56 ch05
--More--(74%)
画面がファイルサイズの順序で並べ替えられた行で構成されるテキストでいっぱいになると、画面がいっぱいになります。画面の下部には、more プロンプト。ここでコマンドを入力して、ソートされたテキスト内を移動できます。
この画面が終了したら、moreプログラムの説明にリストされているコマンドのいずれかを使用できます。