SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

業務でラクするためのUNIXテクニック集

cut、head、tail、sort・・・定番のフィルタコマンドを使いこなす!
~業務でラクするためのUNIXテクニック~

第3回 「並べ替え」編

  • X ポスト
  • このエントリーをはてなブックマークに追加

 今回は、cut、paste、sort、uniq、head、tail、wcといった定番のフィルタコマンドを使ったテクニックを説明します。なお、この連載ではUNIX系OSをコマンドライン上から効率よく利用するために知っておくべきテクニックや、便利な小技を紹介しています。

  • X ポスト
  • このエントリーをはてなブックマークに追加

はじめに

 この連載では、UNIX系OSをコマンドライン上から効率よく利用するために知っておくべきテクニックや、便利な小技を紹介していきます。

 今回は、「定番のフィルタコマンドを使いこなす」ためのテクニックを紹介します。

今までの記事

対象読者

  • UNIX系OSコマンドを一通り利用したことがある方
  • 正規表現を利用したことがある方
  • 何らかのプログラミング経験がある方

動作確認環境

  • Linux(Debian etch/Fedora 9/CentOS 5.1)
  • FreeBSD 6.1
  • Cygwin 1.5.X

 なるべくUNIX系OS一般に当てはまるよう解説するので、特に記述がない場合は、Mac OS X、Red Hat Linux上でも動作します。

 シェルに関しては、bash(Bourne-Again Shell 2および3)を想定しています。

定番のフィルタコマンドを使いこなす

 標準入力からデータを受け取り、その結果を標準出力に出力するコマンドを「フィルタコマンド」と呼びます。フィルタコマンドは、「|(パイプ)」で繋げることで、ログの解析などさまざまな処理ができます。

 今回は、定番のフィルタコマンド(cutpastesortuniqheadtailwc)のテクニックを説明します。

ファイル内文字列の分割

cutコマンド

 cutコマンドは、特定の文字で区切られた項目を分割します。利用方法は次のようになります。

cutコマンドの基本文法
$ cut [オプション] [ファイル名]

 主なオプションは次のとおりです。

cutコマンドの主なオプション
オプション 説明
-c 切り出す文字数を指定する
-d 区切り文字を指定する(デフォルトはタブ)
-f 表示する項目を指定。区切った順に左から1,2,3...
-s 列の区切りのない行を無視する
例)「/etc/passwd」ファイルからユーザー一覧を出力

 「/etc/passwd」ファイルは、ログインを許可するユーザー一覧などを管理しています。この中から、ユーザー名だけを出力するには、下記のように指定します。

$ cut -d : -f1 /etc/passwd
root
daemon
...(省略)
例)カンマ区切りの2列目以降を切り出す
$ echo "field1,field2,field3,field4,field5" | cut -d , -f2-
field2,field3,field4,field5

 「,(カンマ)」区切りで、2列目から最後の列まで切り出しています。

例)1文字目と3文字目を切り出す
$ echo "1234567" | cut -c1,3
13

 「-d」オプションで区切り文字を指定しない場合は、タブが使用されます。

例)スペース区切りの1列目と3列目を切り出す
$ echo "field1 field2 field3 field4 field5" | cut -d ' ' -f1,3
field1 field3

 「 (空白)」区切りの場合は、「' '(シングルクォーテーション)」、もしくは「" "(ダブルクォーテーション)」で括ります。

※注1

cutコマンドでは、連続する空白文字を1つの区切り文字として扱うことができません。空白区切りの列を切り出すにはawksedなどが利用できます。

awkを使うと次のように指定できます(詳細は次回以降に説明します)。

$ echo "field1 field2 field3 field4 field5" | awk '{ print $1,$3 }'

次のページ
ファイル内文字列の結合

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
業務でラクするためのUNIXテクニック集連載記事一覧

もっと読む

この記事の著者

保田和隆(ヤスダカズタカ)

Yasuda Kazutakaネットワーク関連の組み込みソフトウェア開発者。http://uguisu.skr.jp/Windows/

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/3643 2009/05/19 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング