unix - テキスト処理: フィルタコマンド
代表的なフィルタコマンド
コマンド | 役割 |
---|---|
cat |
入力をそのまま出力 |
head |
先頭部分を出力 |
tail |
末尾部分を出力 |
grep |
指定したパターンが当てはまる行を検索 |
sort |
順番に並べ替える |
uniq |
重複した行を取り除く |
tac |
逆順に出力 |
wc |
行数やバイト数を出力する |
主なコマンドの説明
head
, tail
最初、または最後の数行を表示
Tips
最小の
tail -n +<N+1> <file>
例: 最初の5行をスキップして標準出力
tail -n 6 test.txt
wc
wc -l
: 行数をカウントwc -w
: 単語数カウントwc -c
: バイト数を返すwc -m
: 文字数を返す
sort
行単位でテキストを並べ替える。デフォルトではASCIIコード順なので大文字->小文字の順でソートされる。
主なオプション
-k
: フィールド項目でのソート スペース区切りのテキストの場合 (ls
やps
の標準出力など) は-k
でフィールド番号を指定して、そのフィールド項目でsortできるので便利。-n
: 数字順のソート(-n
)-o
オプションで文字列を数値と皆して並べ替える。zero paddingされてない数字でも大丈夫。-r
: 逆順にソート(-r
)
uniq
重複行を取り除く。
同じ内容の行が連続して重複する場合のみ有効なので注意
非連続な重複行を対象にする場合はsort
してから。
-c
: 重複する行をカウントして返す。
'cut'
入力行の特定フィールドの項目を切り出して出力する。
書式
cut -d <区切り文字> -f <フィールド番号> [<ファイル名>]
<区切り文字>は、Defaultはタブ区切り
<フィールド番号>は1,4,6
のようにカンマ区切りで複数指定が可能。
'tr'
1文字単位の文字の置換。および、削除 また、フィルタコマンドとして設計されているので、ファイルを指定して読み込むのではないのに注意。
1文字置換の使用例
<ファイル名>の小文字を大文字にする。a-z
などの指定可。
cat <ファイル名> | tr a-z A-Z
削除の使用例
下記例のように、改行コードを取り除きたい場合によく使われる。
cat <ファイル名> | tr -d "\n"