unix - テキスト処理: フィルタコマンド

unix - テキスト処理: フィルタコマンド

代表的なフィルタコマンド

コマンド 役割
cat 入力をそのまま出力
head 先頭部分を出力
tail 末尾部分を出力
grep 指定したパターンが当てはまる行を検索
sort 順番に並べ替える
uniq 重複した行を取り除く
tac 逆順に出力
wc 行数やバイト数を出力する

主なコマンドの説明

head, tail

最初、または最後の数行を表示

Tips

最小の行をskipして表示したい場合

tail -n +<N+1> <file>
例: 最初の5行をスキップして標準出力
tail -n 6 test.txt

wc

  • wc -l: 行数をカウント
  • wc -w: 単語数カウント
  • wc -c: バイト数を返す
  • wc -m: 文字数を返す

sort

行単位でテキストを並べ替える。デフォルトではASCIIコード順なので大文字->小文字の順でソートされる。

主なオプション

  • -k: フィールド項目でのソート スペース区切りのテキストの場合 (lspsの標準出力など) は-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"