<8> フィルターとパイプライン

8.1 フィルターの概要

パイプライン

パイプの構成要素として 様々なコマンドがあり、
フィルターとして動作する。

8.2 情報源について

manコマンド

8.3 実例1 データ生成

yes から出発してみる。 yesの用途


 yes
        # Ctrl-C で止めて下さい
 yes | head -15
 yes " " | head -15             # 数値(行数)15は適当な値
 yes " " | head -15 | nl        # head -15 と nl は 入れ替えてもいい
 yes "" | head -15 | nl         # nl はデフォルトでは空行はスキップする
 yes "" | head -15 | nl -ba
tail

それぞれのコマンド(と引数)の意味を確認しながら実行してみて下さい。

さらに、

yes "" | nl -ba | grep '3' | head -15               # 3のある行
yes "" | nl -ba | grep '3$' | head -15              # 1の位が3である行($はあとで解説)
yes "" | nl -ba | tail -n +100 | head -15           # 上と下からカット(行範囲指定)
yes "" | nl -ba | tail -n +100 | head -1            # 指定した行だけ
GREP <-  Global Regular Expression Print
yes+tail

実例2 シンプルな変形

ls | cat | cat | cat      # 全透過フィルターはいくつ重ねても同じ
ls | tac                  # cat を逆さまにした名前
ls | rev                  # REVerse

実例3 awk と sed (1)

ls -l | awk '{print $1}'
ls -l | awk '{print $9}'
ps x  | awk '{print $8}'
ps x  | awk '{print $8}' | tail -n +1
ps x  | awk '{print $8}' | sed '1d'
ls -F | sed '/\//d'
ls -l | awk '{print $9,$1}'
awk <- Aho Weinberger Kernighan (それぞれ人名)
sed <- Stream EDitor

パイプの終段

実演例

(別ページの実演例も参考にして下さい。)