投稿

ラベル(shell芸)が付いた投稿を表示しています

計算科学に必要なShellによるテキストファイル編集2

イメージ
前に書いた、「 計算科学に必要なShellによるテキストファイル編集 」の続編です。 計算科学で求めた最適化構造は、慣例に従ってSupporting Informationファイルの末尾に乗せることが多いです。 Outputファイルの座標は、下記のような形で出てくることと思います。 これをこのまま貼り付けても良いのですが、空白が多く不格好です。私は、できるだけ間を詰め、フォントサイズを落とし、2カラム表記にすることで大体の構造情報は、一分子1ページになるようにしています。 この際に、数字と数字の間には、見栄えを良くするために無数のスペースが入っていたり、余分な空行があったり、体裁を整えるのが面倒です。カンマ切りのcsvに変換できたら、excelなんかでも扱えるファイルになります。 そのための処理を、今回まとめました。 _______ 扱うファイル名を、「AAAA」 とします まず、ファイルが置かれているディレクトリまで移動し、以下のコマンドを打ってみてください。  cat -e AAAA.txt | head -n 20 自分のファイルをcat コマンドで、ターミナルに表示させています。 -e オプションで、改行の部分に隠れている記号を表示させています。 (以下の画像ファイルの「$」マークが改行コードです。) 余分なスペースを、ふっとばしたいと思います。 以下の様に、sed コマンドを使いましょう。  sed -i ".bak" -E "s/ +/,/g" AAAA.txt -i で、バックアップファイルの拡張子を指定します。 これを入れておかないとうまく行かなかったりします。 -E で、正規表現つかうぞ!と宣言しています。 "" の中身の操作をおこないますが、 s/ X / Y /g なので、XをYで全て置換、という意味です。 Xの部分に、   / +/ ( [スペース] と、[プラス記号])が入っていますが、 プラス記号は正規表現で、「その前にあるものが繰り返し一つ以上」、という意味です。 ここではスペースが入っているので、スペースが一つ以上入っていれば、 その部分が参照されます。 Yの部分は、 何も入っていないので、...

pythonを使って京阪神エリアのコロナウイルス新規感染者数をプロット

イメージ
コロナウイルスの流行に端を発する、データ処理についてのシリーズ記事ですが、今回でようやくひとつのゴールに辿り着けそうです。 今日の目標は、以下のプロットを、shellからのコマンド一発で生成する方法についてです。 京阪神+αエリアのCOVID19新規発症者数の推移(4/15日10時現在) スクリプトは、shellスクリプトとpython3のスクリプトから成り立っています。 要素としては、これまでの記事で紹介したコマンドがほとんどです。 (データ列の名前だったり、少し書き換えている部分もあります。) 適当なフォルダを作って、そこに、以下の2つのファイルを作成したら、 ターミナルで「 sh COVID_count.sh 」と入力するだけで、瞬時に上のようなグラフが作成されるはずです( ターミナルからのシェルスクリプト実行についてはこちら )。 ______________________ COVID_count.sh ______________________ mkdir $(date +%m%d) cp COVID_count.py $(date +%m%d) cd $(date +%m%d) curl https://dl.dropboxusercontent.com/s/6mztoeb6xf78g5w/COVID-19.csv | cut -d ',' -f 1,6,8,10,11,24,27 | sed -e 's|/2020||g' -e 's|,4/|,2020/4/|g' -e 's|,3/|,2020/3/|g' -e 's|,2/|,2020/2/|g' -e 's|,1/|,2020/1/|g' > COVID_19_$(date +%m%d).csv grep -e 京都府 COVID_19_$(date +%m%d).csv | cut -d ',' -f 1,3,4,5 | nkf -s > COVID_19_kyoto.csv grep -e 大阪 COVID_19_$(date +%m%d).csv | cut -d ',...

爆速で英語論文を読む

イメージ
[概要] この記事では、shellと適当な翻訳ソフトで、英語論文をチャチャっとそれなりに和訳して、内容を把握するための情報処理Tipsを提供します。 途中、なぜこのような記事を書くに思い至ったか、という雑感が著してありますが、急いでいる人は [方法] まで飛んでください。 [4/16日: 文字化け問題を解消しました。] [序文]   このコロナウイルス騒動で、自宅待機を命じられ、しこたま英語論文を読んでいる人も多いのではないでしょうか。 特に、ラボに入って間もない学生さんたちには、とてつもない苦行なのではないか?と推測します。 私は今でも、英語をスラスラ読めるわけではないですし、ラボに入った頃を思い返すと、読んでも読んでも全然頭に入ってこなかったのを、とても鮮明に覚えています。 (読んだ論文の中身は覚えてないけど。。) 修士時代に留学先で出会ったアメリカ人は、Reveiw論文を何報も読んでいて、爽やかに「これがオススメだよ!」と、300 P 近くの論文の束を、わざわざプリントアウトして僕にくれました。 こんなん勝てるわけねぇ、、と思ったものです。 なぜ読めないのか?!? 分析してみると、2つの要因があるように思います。 1. 英語が不得意(そりゃそうだ) 2. 書いてある内容(サイエンティフィックな論理)が難しい どちらか一方が苦手なだけな人であれば、継続的な努力でなんとかなりそうです。 しかし、どちらも訓練がたりていなかったとしたら・・・? 英語論文を読むって、一輪車に乗りながら、そろばんを弾くくらいの難易度 があるのではないでしょうか。 ( イラストや にも、流石にこれらを同時にこなす人のイラストはなかった。) この点について、twitterを見ていると、 • ラボに入ったら、和文の総説から読み始めたらいいんだよ! 派と、 • 初めに変な癖がつくと良くないので一流とされている研究者の総説がいいよ! 派、 が戦っていました。昔は、後者押しでしたが、最近私は前者に傾いています。 というのも、境界領域的な仕事をしようとすると、やはり英語では吸収速度が遅く、間に合いません。 和文で概要を掴んでから、ピンポイントな論文は英語の原著、ということが多いです。 毀誉褒貶のある人ですが、人工...

PDFファイルを1ページづつにバラバラにする(あるいはまとめる)

イメージ
PDFファイル、バラバラにしたくない!? 諸般の事情で、PDFを1ページずつに分割する必要がありました。 mac、あるいはLinux環境であれば、「poppler」というプログラムをインストールすることで、Shellから命令して、pdfについての様々な操作ができるようになります。 手順は以下のとおりです。 1. popplerをインストールする  ターミナルに、以下のコマンドを打ち込めばpopplerが無償でインストールされます。 $ brew install poppler (brewってなに?という人、インストールがうまく行かなかった人は一番下へ。) 2. pdfseparate コマンドで、pdfファイルをバラバラに あとは、ターミナルから指示をするだけ。 以下の指示を打ち込めば、page-1.pdf、 page-2.pdf、 page-3.pdf、、、と、ファイルが生成します。 $ pdfseparate (目的のファイルの名前.pdf) page-%d.pdf 以上です! _________________ ※ brew とは、あなたのmacに入っていないプログラムをインストールするのを助けてくれるプログラムで、とても広く利用されています。 もし、インストールしていなければ、入れておくことをおすすめします。 参考: https://yu8mada.com/2018/04/12/homebrew-s-installation-and-basic-usage/   : https://original-game.com/homebrew/ 私は、インストールの際に、下記のようなエラーが出ました。 Error: Xcode alone is not sufficient on Mojave. Install the Command Line Tools:    xcode-select --install この場合、Xcode(macの中に入っている、いにしえのプログラム)のアップデートが必要です。 指示された通り、 $ xcode-select ––install と打ち込むことで、xcodeが更新され、brewもうまく作動しまし...

複数のshellコマンドを一度に実行する

[概要] 本記事では、いくつかのShellスクリプトを、取りまとめて実行する方法について解説します。 いわゆる、「シェルスクリプト」というやつの使い方になります。 [まくら]  前の記事 で、macのターミナルを使ったcsvファイルのダウンロードと、データの処理について解説しました。 shellスクリプトを利用すると、webブラウザを経由することなく、手早く情報の処理が行えることが分かったかと思います。 黒い画面を見ると恐怖を感じる人も多いかもしれませんが、かんたんなスクリプトを組めると、 同じことを何度もする必要がある場合に、時間を大きく節約できます。 さて、前回の記事では、近畿の各県の情報、全国の、その日その日の死者数についての情報 を、それぞれcsv形式で保存するスクリプトを紹介しました。 都合、5本のコマンドを実行すればこれらの情報をすべて得られます。 でも、 めんどくさい ですよね。 人によっては、47都道府県の情報をすべて個別に取得したいひともいるでしょう。 やってられません! 大丈夫です。めんどくさいをなんとかしてくれるのが、コンピュータです。 [流れ] 1. 適当なテキストエディタを開く 2. 実行したいシェルスクリプトをそこに貼り付ける 3.   一番はじめの行に、「 #!/bin/sh 」と書いて、名前をつけて保存する 4. ターミナルから、先程作ったスクリプトを実行する 簡単ですよね? [詳説] 1. 適当なテキストエディタを開く なんでもよいです。macであれば、テキストエディットで大丈夫です。 少しプログラミングに興味がある人であれば、プログラミング用のエディタである、 「 Visual Studio Code  (VS Code)」をインストールしてもよいかもしれません。 カッコの後ろ半分を補完してくれたり、一括変換が便利だったりします。 プログラミングをしていると、 カッコで挟んで、それをまたカッコで挟んで、、、このカッコ、どれと対応してるん?見たいな状況がよくあるのですが、色を自動で変えてみやすくしてくれたりします。 マイクロソフト社製です。MS社にはあまり良いイメージはなかったんですが、 VS Codeはオープンソース...