Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.

大きなテキストデータを閲覧するには

How to look over a large amount of text data file?

  • Loggen Sie sich ein, um Kommentare anzuzeigen.

大きなテキストデータを閲覧するには

  1. 1. 大きなテキストデータを 閲覧するには 2017-03-21 下野寿之  大きなテキストファイルを受け取った後に、 最初に中の様子を確かめるための方法を、 手を動かす初心者のために、説明します。  内容は、Unix、文字コード、黒い画面、いく つかのコマンドの紹介です。  大きなデータファイルの分析は、まず閲覧 することが大事です。
  2. 2. 前提 • 本文書はデータファイルの触り方もあまり知らない初心者を対象として います。(SQLなどはこの文書では解説しません。) • 高度で本質的な作業が必要なとき、もしくは、他のいかなる手段でも何 か困難が生じた時に必要となる基礎的ないし原理的な手段を説明する ことを、本文書では試みます。 • 上記に書かれたことの詳細は、次ページ以降を一読しただけでは、理 解出来ない可能性があることを前提して、話を展開します。読み返し、 もしくは独自調査を要求する文書となります。 • 一部、強調するあまり、留意すべき例外があるかもしれません。本質 的な指摘は歓迎します。
  3. 3. はじめに • 2017年にいたってなお、 Unix コマンド (もしくは Linux コマンド) に勝る コマンド体系は無いと考えられます。 • 他のソフトウェアを使うと、下記の様な弊害が 容易に生じます。 • 間違った計算が為されていたのに、分かりにくい。 • 間違った結果が出力されても、訂正手段が無い。 • 結果が正しいかどうかの検証手段に乏しい。
  4. 4. アスキーコード (1963年制定) • 現状、電子ファイル上のデータ は、内部的にはバイトの羅列で ある。1バイトは8ビットに相当す るので、256通りの値を持つ。 • 英語以外の自然言語用に各種 の文字コードが定められている が、右のようなアスキーコードが 初期に定められた。英数字と制 御コードについて、それぞれ7 ビットで表される。 • まずは、タブ文字の制御コードを この文書の後を読むために、注 目して欲しい。 https://en.wikipedia.org/wiki/ASCII から引用。 アスキーコードは0から始まる。10進数で 127まで、 2進数で 111 1111まで、16進数で 7F まである。 タブ文字は HT (Horizontal Tab) と表される制御文字 である。アスキーコード上 2進数で 000 1001 となる。
  5. 5. JIS X0201 (1969年制定) ASCIIコードに対して、カタカナが使えるように拡張したもの。現在はほとんど使わない。
  6. 6. 日本でよく使われる文字コード • UTF-8 (1992年最初の制定) 1文字が最大6バイト。通常3バイト。 英数字など、ASCII文字と共通のものは1バイト。 • EUC-JP (1985年最初の制定) 1文字が通常2バイト。 似たものにEUC-CN, EUC-TW, EUC-KR がある。 • Shift_JIS (1982年最初の制定) いろいろなベンダーが独自に拡張しているので、 (MSKANJI, CP932等)とり扱いがやっかいなことがある。 ”3C問題” にも注意。 文字コードが合っていないと 「文字化け」を起こす。 上記の文字コードの間で変 換をすると、バックスラッシュ と円マーク、チルダとカラット の間などで問題が起こること がある。容易な点検方法は、 ある変換をして、その逆変換 をして、元の文字列と変化が 無いかを調べる方法である。
  7. 7. 改行コードについて  LF ; LF(0A) : UNIX 形式  CR + LF ; CR(0D)+LF(0A)の2バイト : Windows形式 • UnixまたはLinuxで 改行コードがWindows形式のファイルを処理する場合には、Unix形式 に変換する必要があることが多い。 • 初心者はエディターの Windows のEmEditor などを使って変換してもよい。Mac にもいろ いろなエディタがあるが、長大なファイルの処理が遅くなる可能性がある。 • ファイルの最後のバイトが改行文字で終わっていない場合は、連結したり、行数を数える 場合に問題が起こることがある。正確な処理をする場合には、要注意事項の一つとなる。
  8. 8. 黒い画面を使う terminal または iterm2 などを使う あるファイルの中身を見た例。最初の2行、文字コード、16進ダンプを確認。
  9. 9. 黒い画面について • 「ターミナル」とよく呼ばれる。Macでは (Spotlight検 索で) terminal で起動が可能。ただし、terminal の 代わりに iterm2 をインストールして使うと良い。 • Windows では、コマンドプロンプトなどがあるが、 UnixやLinuxのコマンドは使えない。Cygwin で使う などの代替手段がある。 • Amazon Web Service (AWS)の EC2 で Linux を使う 方法もある。この場合は手元のクライアント端末か らAWS上のサーバーに接続するための、いくつか の設定作業が必要。
  10. 10. 黒い画面で新しい ソフトをインストールするには • Mac の場合は brew がお薦め。(MacPorts を使っても良い。MacPorts と brew は “同居” も可能。) brew を Google検索して、インストール方法 を確認すれば良い。そして brew install coreutils を最初に行うと良い。 • WindowのCygwinの場合は、Cygwinのインストールに使った setup.exe を再度実行すれば良い。全てのソフトをインストールしようとすると、ダ ウンロードに非常に時間がかかるので、必要なソフトだけを選ぶように する。この選択については何度か試行錯誤をすることがおすすめ。 • AWS の EC2 で Linuxインスタンスを起動した場合は、Linuxのディストリ ビューションに応じたインストール方法がある。(yumやapt など)
  11. 11. Unix または Linux を使うときは • 基本的なコマンドは、ひとつひとつ覚えていくこと。 • マニュアルを参照する場合は、次のようなコマンドを (順次)実行する。 man コマンド名 # 例: man cat コマンド名 -- help # 例 : man help help コマンド名 # 例 : help for • インターネット上で、 “manpage コマンド名” でグーグル による検索をするのも良い。
  12. 12. CSV形式等データファイルが ある時、最初に何をするか • ls -l でファイルサイズを確認する。 • サイズが小さい場合は、cat コマンドで中を表示す る。 • less コマンドで中身を確認する。文字コードの問題 で文字化けなどする場合は、日本語の場合は lv コマンドをインストールして使う。 iconv をつかう方 法もある。 nkf というコマンドもある。 • 最初の10行を確認する場合は head コマンド、最 後の10行を確認する場合は tail コマンド。
  13. 13. CSVファイルを操作する 便利な他のコマンド • grep で文字列の検索。行単位かつ正規表現検索 であることに注意。オプションにより多彩な動作。 • wc で行数など数えることができる。 • sort で行毎のソート(整列)ができる。ただし文字 コードに注意。 • diff で2個のファイルの比較が出来る。 • 他、fold , awk , sed ,file , od , sdiff, column, paste な ど便利なコマンドがある。for 構文の繰り返しもでき る。この説明は割愛。
  14. 14. 予備スライド
  15. 15. Q. Unix/Linuxのコマンドは早いか • (やや乱暴な言い方をすると) 他のソフトウェアは大抵の場合、いろいろな妥協 をしている。それに比べると、非常に早い。特定の企業のみに捕らわれない世 界中の優秀なプログラマーがよってたかって開発してきた経緯があるため。 • たとえば、ファイルを全部読まずに必要な操作のみを行う。head は最初の10 行しか読まないので、巨大なファイルでも高速。tail コマンドも同様。1ギガバイ トのファイルの単純読み込みが15秒かかったとしても、head や tail を使うと 0.1 秒もかからない。 • 端的に言うと、ファイルはディスク上の単なるバイトの配列と見なし、それが CPUやメモリと物理的に通信し合っているような構図から理屈で理解出来るよう な、理論的な高速性の限界を達成した速度を期待できる。
  16. 16. Q. Bash とは • 1989年に最初のリリースがされた Unix のシェルのひとつ。シェルは他 に、csh, tcsh, zsh などがある。 • あくまで CUI である。GUI ではない。 • 端末(ターミナル)上で、どのシェルを 使っているか、もしくはbashを使って いるか気になった時は、echo $0 (小 文字4文字+空白+ドル+ゼロ) を実行 する。 • 最近、Windows 10 にダウンロードし て使えるようになった。(2017年現在、 いくつかの機能制限がある。)
  17. 17. Q. UTF-8 と Unicode の違いは • Unicodeは、世界中で使われている 10万文字以上を、それぞれ符号位 置(16進数の番号)と共に定義してい る。「符号化文字集合」である。 • その符号化文字集合の各文字を、 符号位置に従って、バイト配列に変 換する方法「文字符号化方式」には いくつかあり、UTF-7, UTF-8, UTF-16, UTF-32 などがある。近年は、Unix で は UTF-8、 Windowでは UTF-16 をよ く用いる。
  18. 18. Q. BOM(バイト順マーク)について • UNICODEのテキストファイルの最初に、符号化文字方 式(UTF-{7,8,16,32}など)を識別するための、2バイトか ら4バイトの符号。 • ただし、UTF-8 については、BOMを付加しないことが望 ましい。プログラムファイルにBOMを付加するとプログ ラムと認識されないことがあるため。付加していないこ とを特に協調するときには、UTF-8Nと呼ぶことがある (日本の一部のみ)。

×