多くのコマンドやソフトウェアは 1 なんらかの情報を受け取り 2 処理し 3 結果を出力する ( 前ページの図 ) cat の処理結果は端末ウィンドウに表示されるが これは cat が結果を標準出力に 吐き出した ( 出力した ) からである 通常 標準出力に吐き出された情報は端末ウィンドウ に表示

Similar documents
フィルタとは

_unix_text_command.pptx

ソフトウェア基礎 Ⅰ Report#2 提出日 : 2009 年 8 月 11 日 所属 : 工学部情報工学科 学籍番号 : K 氏名 : 當銘孔太

練習 4 ディレクトリにあるファイルを直接指定する (cat) cat コマンドを使う (% cat ファイル名 ) と ファイルの内容を表示できた ファイル名のところにパス名を使い ディレクトリ名 / ファイル名 のように指定すると ディレクトリ内にあるファイルを直接指定できる 1 % cat _

Microsoft PowerPoint - InfPro_I6.pptx

プレポスト【解説】

基礎プログラミング2015

PowerPoint プレゼンテーション

スライド 1

スライド 1

Taro-cshプログラミングの応用.jt

Microsoft PowerPoint - スハ?コン利用入門_ _UNIX利用の基礎知識.pptx

書式に示すように表示したい文字列をダブルクォーテーション (") の間に書けば良い ダブルクォーテーションで囲まれた文字列は 文字列リテラル と呼ばれる プログラム中では以下のように用いる プログラム例 1 printf(" 情報処理基礎 "); printf("c 言語の練習 "); printf

第 3 回情報基礎演習 UNIX / Linux: ファイルシステム シェルを理解しよう! 谷口貴志 Panda に login し 情報基礎演習クラスの VDI から Ubuntu に接続し Linux に login した後, 左 上の Activity 端末のアイオン をクリック 端末 を立ち

Microsoft PowerPoint - Borland C++ Compilerの使用方法(v1.1).ppt [互換モード]

PowerPoint Presentation

情報処理概論(第二日目)

Fortran 勉強会 第 5 回 辻野智紀

このうち ツールバーが表示されていないときは メニューバーから [ 表示 (V)] [ ツールバー (T)] の [ 標準のボタン (S)] [ アドレスバー (A)] と [ ツールバーを固定する (B)] をクリックしてチェックを付けておくとよい また ツールバーはユーザ ( 利用者 ) が変更

1. はじめに 1. はじめに 1-1. KaPPA-Average とは KaPPA-Average は KaPPA-View( でマイクロアレイデータを解析する際に便利なデータ変換ソフトウェアです 一般のマイクロアレイでは 一つのプロー

160420c_unix.pptx

<4D F736F F F696E74202D E3F FC96E55F F554E CC8AEE D8EAF2E B8CDD8AB B83685D>

3.Cygwin で日本語を使いたい Cygwin で以下のコマンドを実行すると それ以降 メッセージが日本語になります export LANG=ja_JP.UTF-8 これは 文字コードを日本語の UTF-8 に設定することを意味しています UTF-8 は Cygwin で標準の文字コードで, 多

ネットワークシステム管理 #01

Microsoft PowerPoint - 第3回目.ppt [互換モード]

> usdata01 と打ち込んでエンター キーを押すと V1 V2 V : : : : のように表示され 読み込まれていることがわかる ここで V1, V2, V3 は R が列のデータに自 動的につけた変数名である ( variable

PowerPoint プレゼンテーション

ポインタ変数

ゲートウェイのファイル形式

OS

実験 5 CGI プログラミング 1 目的 動的にWebページを作成する手法の一つであるCGIについてプログラミングを通じて基本的な仕組みを学ぶ 2 実験 実験 1 Webサーバの設定確認と起動 (1)/etc/httpd/conf にある httpd.conf ファイルの cgi-bin に関する

Java Scriptプログラミング入門 3.6~ 茨城大学工学部情報工学科 08T4018Y 小幡智裕

OS

Linux サーバー構築 LINUX サーバー構築目次... 1 第 1 章 LINUX のインストール... 6 第 1 節 CentOS とは... 6 第 1 項 CentOS とは... 6 第 2 節 CentOS インストールの準備... 6 第 1 項 iso ファイルの入手... 6

初めてのプログラミング

Microsoft PowerPoint ppt

本チュートリアルについて 14 部構成 比較的簡単なトピックから 各回 プログラミング言語 任意 チュートリアルで 新しい内容 宿題 プログラミング演習 次の週 結果について発表 もしくは話し合いをする スライドは Python で Python, C++, Java, Perl についての質問い答

スライド 1

PowerPoint Presentation

ネットワークシステム管理 #01

PowerPoint Presentation

Microsoft Word - 09isA11_mod.doc

今回のプログラミングの課題 ( 前回の課題で取り上げた )data.txt の要素をソートして sorted.txt というファイルに書出す ソート (sort) とは : 数の場合 小さいものから大きなもの ( 昇順 ) もしくは 大きなものから小さなもの ( 降順 ) になるよう 並び替えること

CONTENTS マニュアルの表記... S01-02_01 1.DataNature Smart 全体概要図... S01-02_11 2. 基本操作... S01-02_ ジョブの作成... S01-02_21 加工条件設定... S01-02_21 Step1: 処理対象データの指

1 ログインとログアウト 1.1 ログイン ログイン画面で [ password ] 欄にパスワードを入力します (図 1) 図 1 ログイン画面 正しくログインができると Ubuntu のデスクトップ画面 図2 が表示されます 図2 Ubuntu デスクトップ画面 2

電話機のファイル形式

模擬試験問題(第1章~第3章)

(Microsoft Word - 01PowerPoint\217\343\213\211C\203p\203^\201[\203\223\222m\216\257\225\\\216\206.doc)

プログラミング実習I

PowerPoint Presentation

Microsoft Word - 教科書大1b第12週06.doc

Microsoft Office Excel2007(NO4中級後編 エクセルを実務で活用)

Word2013基礎 基本操作

情報処理Ⅰ

Microsoft Word A02

170420_unix.pptx

VPN 接続の設定

2. オプション設定画面で, 必要事項を記入 選択します. 少なくとも, タイトル に課題の見出しとなる文章を入力する他, 種別 を アンケート( 無記名式 ) に設定する必要があります. また, アクセス制限はここでは コースメニューで非表示にする に設定します. その他設定は必要に応じて行って下

k_seminar_hands_on_for_linux_beginner.pptx

目次 1. 変換の対象 砂防指定地 XML 作成メニュー シェープファイルからXMLへ変換 砂防指定地 XMLとシェープファイルの対応.csv 変換処理 CSVファイルによる属性指定... 5

Microsoft Word - RefWorksコース doc

作図コマンド : pscoast -R125/148/30/46 -JM15c -B5g5 -Di -W5 -S235 -X6c -Y4c > test.ps 作図例 : 2 分布図の作成 2.1 点を描く 地点の分布を作図するときは たとえば以下のように行います > pscoast -R125/1

引き算アフィリ ASP 登録用の日記サイトを 作成しよう Copyright 株式会社アリウープ, All Rights Reserved. 1

概要 ABAP 開発者が SAP システム内の SAP ソースまたは SAP ディクショナリーオブジェクトを変更しようとすると 2 つのアクセスキーを入力するよう求められます 1 特定のユーザーを開発者として登録する開発者キー このキーは一度だけ入力します 2 SAP ソースまたは SAP ディクシ

ポインタ変数

基本的な利用法

Open usp Tukubai ってなに? Open usp Tukubai は 売上データの処理や勘定系システムの構築に利用されているエンタープライズ向けの高性能コマンド群 usp Tukubai のオープンソース版です 業務で特によく使われるコマンドを選りすぐって Python で再実装したも

C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ

PowerPoint プレゼンテーション

PowerPoint Presentation

シェルスクリプトマガジン Vol27

スライド タイトルなし

◎phpapi.indd

slide5.pptx

memo

以下のソフトウェアに専用ライセンスを設定することで 変換機能が使えるようになります アプリケーション名バージョン日付 JPGIS-XML ビュー F 7.1.0α 以降 2013/06/27 以降 フリーウェア JPGIS-XML ビュー F のバージョン から XML の 筆 と 図郭

問題 1 次の文章は 作業環境について述べたものである を解答群 { } より選び その記号で答えよ にあてはまる適切なもの 設問 1. < 図 1>はルーラーの一部である 1に示されるインデントマーカーを移動することにより を設定することができる < 図 1> { ア. 1 行目のインデントイ.

Word 2010 連番付きラベル印刷 ( クイックパーツ フィールド を使う簡易版 ) 那須シニアネット 西村 図 1 図 18 の連番付ラベルは Word 2010 差し込み文書 差し込み印刷の開始 の [ ラベル ] メニューと 挿入 クイックパーツ の [ フィールド

2006年10月5日(木)実施

I

シェルプログラミング コマンドをパイプでつなげるだけでは済まないような ある程度まとまった処理を複数のコマンドを制御構文を用いたりしてファイルとしたものを ( シェル ) スクリプトと呼ぶ シェルプログラム バッチなどともいう.bash_profile もシェルスクリプトなので このファイルを解読し

基礎プログラミング2015

Microsoft PowerPoint - prog03.ppt

JavaプログラミングⅠ

PowerPoint プレゼンテーション - 物理学情報処理演習

Microsoft Word - Javacc.docx

1. 基本操作 メールを使用するためにサインインします (1) サインインして利用する 1 ブラウザ (InternetExploler など ) を開きます 2 以下の URL へアクセスします ( 情報メディアセンターのトップページからも移動で

二加屋様 Web B2B システム 商品 CSV データ取込マニュアル 2012 年 10 月 19 日 株式会社アイル 概要 このマニュアルは二加屋様の Web B2B システムに商品 CSV データから商品情報を登録す るための手順を示すものです マニュアル内で利用するツール このマニュアル内で

PowerPoint Presentation

ゲートウェイのファイル形式

情報処理概論(第二日目)

第1部参考資料

スライド 1

WagbySpec7

PowerPoint プレゼンテーション

スライド 1

Microsoft Word - データベース.doc

ゲートウェイ ファイル形式

Microsoft PowerPoint - 09re.ppt [互換モード]


Transcription:

生命情報科学専門自習 2 Perl を使わないでテキスト処理 2. フィルタによるテキスト処理 2 回生前期の実習でプログラミング言語 Perl を学んだ 1 しかし 簡単なテキス ト処理は長いプログラムを作成するまでもなく UNIX のコマンドを複数組み合わせるだ けで実現できることが多い 入力されたテキストを加工して出力するコマンドをフィルタと呼ぶことがある UNIX にはフィルタが多数用意されている 今日の実習では フィルタの便利な使いかた と 複数のフィルタの連携技を練習する 2.a. pdb から座標データをダウンロードテキスト処理の練習台として PDB から 2 つの立体構造ファイルをダウンロードしよう 1. 端末ウィンドウを開き 前回の実習で作成した ディレクトリ works/db/pdb へ移動する 2. FireFox を起動し PDB へ行き 1CLL をダウンロード ダウンロードしたファイルを上記のディレクトリへ移動させる 3. 次に PDB から 1UAO をダウンロード 同様に移動させる 2.b. リダイレクションとパイプの復習 リダイレクションは UNIX の重要かつ便利な機能である 2 回生前期の実習でも 習ったが 復習しておく 1 入力 cat input.txt input.txt cat 2 処理 ( cat の場合 : 受け取ったデータをそのまま吐き出す ) 3 標準出力への吐き出し 1 Perl の特徴はテキスト処理が得意なことであり それゆえ バイオインフォマティクスに適している Y2 1

多くのコマンドやソフトウェアは 1 なんらかの情報を受け取り 2 処理し 3 結果を出力する ( 前ページの図 ) cat の処理結果は端末ウィンドウに表示されるが これは cat が結果を標準出力に 吐き出した ( 出力した ) からである 通常 標準出力に吐き出された情報は端末ウィンドウ に表示されるようになっている また 多くのコマンドは ファイルからだけでなく 標準入力という経路からも入力データを受け付ける 特に指定しない場合 キーボードでタイプした文字列が標準入力に流れ込むようになっていることが多い コマンドが結果を標準出力に吐き出す性質を利用すると リダイレクションによって その結果を新しいファイルに格納したり 既存のファイルの末尾に付け加えたりすることができる リダイレクト (redirect) とは のあて名を変える という意味 だ 標準出力に吐き出された内容を新しいファイルに格納するには > を利用する 例 えば old_file.txt の内容を cat を用いて new_file.txt に書き込むには 端末ウィンドウの プロンプトに対して次のようにする cat old_file.txt > new_file.txt (cat を使ってテキストファイルをコピー ) このとき cat の出力は new_file.txt へリダイレクトされているので 端末ウィンドウには表示されない 標準出力を既存のファイルの末尾につなげるように格納するには >> を利用する 例えば another_file.txt の中身を 先ほど作られた new_file.txt の末尾に追加するには 次のようにする cat another_file.txt >> new_file.txt (cat を使って another_file.txt の内容を new_file.txt の末尾に付加 ) コマンドが標準出力へ吐き出した結果を 端末ウィンドウやファイルではなく 別のコマンド ( やプログラム ) の標準入力に流し込むこともできる この機能をパイプという パイプを利用するときは ( 縦棒 ) を使う 例えば ls l で表示されるファイル のリストの全てではなく txt を含むファイル名の情報だけを表示させたいときには次 のようにする これの結果と 単に ls l を実行したときの結果とを比較してみよう ls -l grep txt なお grep は 入力データ ( ファイルまたは標準入力 ) の中から 指定した文字列を含む行のみを抜き出して表示する ( 標準出力へ吐き出す ) コマンドである ( 後述 ) Y2 2

パイプの機能 ls -l grep txt 標準出力 パイプ 標準入力 grep 標準出力 表示 ls l 端末ウィンドウ 端末ウィンドウ 2.c. ワイルドカード シェルでは ファイル名の指定のために ワイルドカード (*) を使うことができる 例えば 次のように使う ls -l *.pdb ( カレントディレクトリにある ファイル名の末尾が.pdb であるファイル全てのリストの表示 ) rm * ( 全てのファイルを削除 危険なので安易に実行しないこと ) mv dir1/*.fasta dir2/ ( ディレクトリ dir1 にある ファイル名の末尾が.fasta のファイルを全て dir2 へ移動 ) more *genome* ( ファイル名に genome を含む全てのファイルを (1 ページずつ ) 表示 ) * は任意の文字列の代替になるワイルドカードだが 任意の 1 文字の代替になるワイルドカードとして? がある 例えば 次のように使う ls?? (2 文字のファイル名を全て表示 ) rm x?? ( ファイル名の先頭が x の 3 文字のファイル名のファイルを全て削除 ) Y2 3

2.d. テキスト関連の UNIX コマンド ( フィルタ ) 2.d.1. cat ファイルの中身を表示するコマンド cat が ファイルの連結に使えることは以前説 明したとおりである 例えば 次のような便利な使い方ができる 2 cat seq1.fasta seq2.fasta seq3.fasta > seqs_123.fasta (seq1.fasta と seq2.fasta と seq3.fasta の内容を順につなぎ seqs_123.fasta に 出力 ) cat seq*.fasta > all_seqs.fasta ( ファイル名が seq ではじまり.fasta で終わる全てのファイルを順番に 3 連結し all_seqs.fasta というマルチ FASTA 形式のファイルを作る ) cat model5.pdb >> models.pdb (model5.pdb の内容を models.pdb の末尾に追加 ) 2.d.2. head, tail head は 入力されたテキストの最初の 10 行のみを表示する 表示する行の数を 変えることもできる 例えば 次のように使う head 1CLL.pdb (1CLL.pdb の最初の 10 行を表示 ) tail 1CLL.pdb (1CLL.pdb の最後の 10 行を表示 ) head -1 seq*.txt ( ファイル名が seq で始まり.txt で終わる全てのファイルの 1 行目を ( 全て ) 表示 ) tail -23 1CLL.pdb (1CLL.pdb の最後の 23 行を表示 ) 2 そのほかの便利機能として n オプション ( 行番号を付加して表示 ) がある 3 ファイル名のアルファベット順 Y2 4

2.d.3. grep grep は 指定された文字列を含む行だけを表示する 例えば 次のように使う 検索文字列では正規表現を使うこともできる また n オプションを使うと それが入力の何行目か を表す数字も表示される grep CA 1CLL.pdb (1CLL.pdb で 文字列 CA を含む行 4 のみを表示 ) grep > seqs_123.fasta (> を含む行のみを表示 シェルがリダイレクションのための > として解釈して しまうことを防ぐために 引用符が必要 ) grep ^SEQRES 1UAO.pdb (1UAO.pdb で 行頭が SEQRES の行のみを表示 ) grep -n ^SEQRES 1UAO.pdb (1UAO.pdb で 行頭が SEQRES の行のみを表示 それが何行目かも表示 ) 2.d.4. wc wc は 入力された文字の総数とか 行の総数とか 単語の個数を表示するコマン ドである ここでは 行の総数を表示させる l オプションを使う例のみをあげる wc -l 1UAO.pdb (1UAO.pdb の行数を表示 ) grep "^ENDMDL " 1UAO.pdb wc -l (1UAO.pdb に含まれる ENDMDL 行の個数 (= 含まれる構造モデルの個数 ) を表 示 ^ は ENDMDL が行頭にあるときにだけマッチさせるためのおまじない ) 4 α 炭素の座標の行がこれにあたる Y2 5

2.d.5. diff diff は 指定された 2 つのファイルを比較し どこが異なるか を指摘する 2 つ のファイルの内容がまったく同一なら 何も表示しない diff ファイル 1 ファイル 2 2.d.6. sort sort は 入力されたテキストの行の順序をソートする 通常は行の内容が文字コード順 ( ほぼアルファベット順 ) になるように並べ替える 行全体を見て比較するのではなく フィールドのみを比較したいときには k オプションを 文字コードとしてではなく 数値として比較したいときには n オプションをつける 今 右のような内容の hanshin.txt というファイルがあるとする このデータファイルに対する sort コマンドのいろいろな実行例を挙げる 53 Akahoshi 0.319 1 Toritani 0.276 4 Sheets 0.290 7 Imaoka 0.281 6 Kanemoto 0.325 39 Yano 0.274 9 Fujimoto 0.251 24 Hiyama 0.278 hanshin.txt sort hanshin.txt ( 文字列として行と行を比較するので 4, 6 よりも 24, 39 の方が上になる ) 1 Toritani 0.276 24 Hiyama 0.278 39 Yano 0.274 4 Sheets 0.290 53 Akahoshi 0.319 6 Kanemoto 0.325 7 Imaoka 0.281 9 Fujimoto 0.251 hanshin5.txt この結果をあとで使うのでファイルに保存しておこう フィルタの実行結果を保存するときには次のようにしてリダイレクションを使えばよい 次の例では 結果が han shin5.txt というファイルに保存される sort hanshin.txt > hanshin5.txt Y2 6

sort -b -k 2,2 hanshin.txt ( 第 2 フィールドの人名の順序にソートする k 2,2 は オプションで 2 つめのフィールドを指定 するときの正式な方法である 5 フィールド同士を隔てる空白文字の個数が統一されていないファイルに対して k オプションを適用する場合は b オプションを併用した方がよい 6 ) 53 Akahoshi 0.319 9 Fujimoto 0.251 24 Hiyama 0.278 7 Imaoka 0.281 6 Kanemoto 0.325 4 Sheets 0.290 1 Toritani 0.276 39 Yano 0.274 sort -n -k 3,3 hanshin.txt ( 第 3 フィールドの打率を数値的に比較して 低い順にソートする 7 ) 9 Fujimoto 0.251 39 Yano 0.274 1 Toritani 0.276 24 Hiyama 0.278 7 Imaoka 0.281 4 Sheets 0.290 53 Akahoshi 0.319 6 Kanemoto 0.325 sort -n -k 3,3 -r hanshin.txt ( 打率の大きい順にソートする -r を指定すると 並べる順序が逆順になる ) 6 Kanemoto 0.325 53 Akahoshi 0.319 4 Sheets 0.290 7 Imaoka 0.281 24 Hiyama 0.278 1 Toritani 0.276 39 Yano 0.274 9 Fujimoto 0.251 照のこと sort コマンドには他にもたくさんのオプションが用意されている man sort を参 2.d.7. uniq uniq は 前後の行を比較して まったく同じ内容の行が連続していたら 1つを残して他を削除する uni q を利用する前に sort を使うことによって 応用の幅がひろがる 次の例は 右に示す入力データに対して uniq を実行した結果である This is a pen. It is a pencil. It is a pen. This is a pin. This is a pen. This is a pencil. eibun.txt 5 この例では k 2 のように簡略表記できる しかし n オプションと併用するときには本文に示したように書かないと 思わぬ結果が得られる場合がある 6 詳しくは man sort を参照のこと 7 この例から分かるように n オプションを使うと 数値の小さい順のソートになる Y2 7

uniq eibun.txt ( 結果は eibun.txt と同じ ) This is a pen. It is a pencil. It is a pen. This is a pin. This is a pen. This is a pencil. 次の例は パイプを使った sort と uniq の連携技の例である This is a pen. という行が一行だけになったことに注目 sort eibun.txt uniq (sort してから uniq を実行した ) It is a pen. It is a pencil. This is a pen. This is a pencil. This is a pin. 2.d.8. join join は 2 つの表形式のファイルを横方向に連結する 8 使いこなせばとても便利 join data1.txt data2.txt data1.txt data2.txt 1 100 2 200 3 300 4 400 5 500 + 1 one 2 two 3 three 4 four 5 five join 1 100 one 2 200 two 3 300 three 4 400 four 5 500 five 2.d.9. paste paste は join の低機能版で 機械的に同じ行番号の行同士を横に連結する また s オプションを付けると 入力ファイルから改行コードを削除する paste -s data1.txt 1 100 2 200 3 300 4 400 5 500 (data1.txt から改行を取り除く ) 8 デフォルトでは 両方のファイルの第 1( 最左の ) フィールド同士が一致する行同士を横方向に連結する このとき 2 つめのファイルの第 1 フィールドは削られる また join を使うときには 事前に 両方の入力ファイルを sort b でソートしておくこと 詳しくは man join を参照 Y2 8

2.d.10. split split は 入力ファイルを指定した行数の断片に分割し その断片を新しいファ イルに書き込む 9 split -100 1UAO.pdb (1UAO.pdb の内容を 100 行毎に分割し 結果をそれぞれ新しいファイルに格納 ) 2.d.11. cut cut は 入力データの各行から 指定された領域だけを取り出して表示する c オプションを使うと 各行の左から数えて何文字目 ( から何文字目まで ) を表示するかを指定できる 10 cut -c18-20 1CLL.pdb (1CLL.pdb の各行の 左から 18 文字目から 20 文字目までを表示 実際に実行してみよ 1UAO.pdb についてもやってみよ ) 2.e 課題 1 以下の問に答えよ 第 1 問 マルチ FASTA 形式のファイル ( ファイル名は multi.fasta とする ) から ヘッダ行 のみを取り出して表示するためのコマンド文字列を書け 第 2 問 1UAO.pdb から アミノ酸配列の情報が記されている SEQRES レコードのみを 取り出して表示するためのコマンド文字列を書け 第 3 問 1UAO.pdb から 原子座標が書かれている ATOM レコードのみを取り出して表示 するためのコマンド文字列を書け 第 4 問 1CLL.pdb に HETATM レコードが何行あるかを知るためのコマンド文字列を書 9 新しくできるファイルの名前は xaa, xab, xac のようになる これの変え方などは man split を参照 10 他のオプションについては man cut を参照 Y2 9

け パイプを使うとよい 第 5 問 1UAO.pdb の ATOM レコードのうち α 炭素のレコードのみを取り出して表示す るためのコマンド文字列を書け 第 6 問 このファイルのタンパク質のアミノ酸配列を表示するコマンド文字列を書け まず α 炭素の ATOM レコードだけを取り出すコマンド文字列を書き パイプで他のコマ ンドにつなげると良い 第 7 問 1CLL.pdb に含まれるアラニンの個数を知るためのコマンド文字列を書け 第 8 問 第 6 問で アミノ酸配列を 1 行で ( つまり 改行コードを含まずに ) 表示するための コマンド文字列を書け 第 9 問 1UAO.pdb の ATOM レコードに記されている原子の x 座標の最小値を知るための コマンド文字列を書け 第 10 問 1UAO.pdb の第 500 行から第 520 行までを表示するコマンド文字列を書け head や tail をうまく組み合わせること 第 11 問 第 10 問で 1UAO.pdb における行番号も一緒に表示するにはどうすればよいか 第 12 問第 6 問のコマンド文字列を編集して 1CLL.pdb に含まれるアミノ酸の組成 ( どのアミノ酸が何個あるか ) を表示するコマンド文字列を書け 最後に uniq コマンドを c オプションとともに使う 11 とよい 11 そうするとどうなるのか は man uniq で確認せよ Y2 10

第 13 問 4 ページで登場した hanshin5.txt と 次に示す hanshin6.txt をもとにして hans hin4.txt のような表を作るコマンド文字列を書け hanshin5.txt hanshin6.txt hanshin4.txt 1 Toritani 0.276 24 Hiyama 0.278 39 Yano 0.274 4 Sheets 0.290 53 Akahoshi 0.319 6 Kanemoto 0.325 7 Imaoka 0.281 9 Fujimoto 0.251 1 144 7 24 117 8 39 137 19 4 135 19 53 143 1 6 144 39 7 144 29 9 117 1 1 Toritani 0.276 144 7 4 Sheets 0.290 135 19 6 Kanemoto 0.325 144 39 7 Imaoka 0.281 144 29 9 Fujimoto 0.251 117 1 24 Hiyama 0.278 117 8 39 Yano 0.274 137 19 53 Akahoshi 0.319 143 1 第 14 問 1UAO.pdb の ATOM レコードのうち 原子の y 座標が負の数である行だけを表示 するコマンド文字列を書け 3. awk 入門課題 1 の最後の問題は ( おそらく ) できなかったと思う これは通常の UNIX コマンドの組合せだけでは実現困難な処理の例である もちろん perl のプログラムを作成すれば簡単に実現できるのだが このような単純な処理を行うたびにいちいち perl プログラムを書くのは面倒だ UNIX の既存のコマンドの組合せでは難しいが perl プログラムを作成するほど複雑ではない そういう場合に役に立つツールがここで紹介する awk である awk を使用するときの基本の構文を次に示す awk パターン { 処理 } 入力データファイル 上の構文で awk を実行すると 入力データファイルが一行づつ読み込まれ もし その行が パターン の部分に記述された条件に合致していれば その行に対して 処理 の部分に記述された処理を行う 例えば 課題 1 の第 15 問は 次のようにすれば解決だ Y2 11

awk $1=="ATOM"&&$8<0{print}' 1UAO.pdb (1UAO.pdb の ATOM レコードのうち 原子の y 座標が負の数である行だけを表示 ) $1=="ATOM"&&$8<0 が パターン である これは 行の第 1 要素 ($1) が A TOM であり かつ ( &&) 第 8 要素 ( $8) が負の数である ( <0) という条件を表している 上の例における 処理 12 は print である 読んで字のごとく 表示せよ という意味である パターンを省略した場合は 入力された全てのデータ行に対して 処理 を実行する 例えば 次のコマンド文字列を実行してみよ awk {print $1} 1UAO.pdb また { 処理 } を省略した場合は {print} と書いた場合と同じように動作する よっ て 課題 1 の第 15 問は 次のようにするのでも良い awk $1=="ATOM"&&$8<0' 1UAO.pdb (1UAO.pdb の ATOM レコードのうち 原子の y 座標が負の数である行だけを表 示 ) awk の使い方の詳しい内容は 実習時に別に配布するプリントを見よ また 次に挙げるのは 関連する URL である GNUawk の日本語マニュアル http://www.kt.rim.or.jp/%7ekbk/gawk/gawk_toc.html awk の便利な一行野郎 http://www.kt.rim.or.jp/%7ekbk/gawk/gawk_7.html#sec45 12 awk では この 処理 の部分のことを アクション と呼ぶことが多い Y2 12