kuroの覚え書き

96の個人的覚え書き

shell

リストに従ってテキスト置換

FASTAファイルのIDの命名を変更したいと思ったが、scaffoldの数が多すぎて面倒臭すぎるので、自動化したい。変更一覧をrename.listに以下のように記録しておく。 Scaffold1 Scf0001 Scaffold2 Scf0002 Scaffold3 Scf0003 Scaffold4 Scf0004 .......... .....…

OSXで改行をまとめて消す。

普通にテキストエディタの置換でやろうとすると1万行とかあると時間がかかって仕方がない。 そこでsedで置換してやりたいのだがOSXのsedはGNU sedではなくBSD sedなのでお作法が違う。 $ sed -e :loop -e 'N; $!b loop' -e 's/\n/* /g' gene.txt >gene1.txt…

multi fastaファイルを1遺伝子ごとのファイルに分割するには

multi fastaファイルを1個ずつのfastaに分割したい。 まずはfastaのseq部分の改行をなくす $ awk -v ORS= '/^>/ { $0 = (NR==1 ? "" : RS) $0 RS } END { printf RS }1' fasta.txt > fasta_awk.txt次にfastaを2行ごとに分割。多数のファイルが同じ階層にで…

連番で同じ処理をさせるためのリストを作る

ファイルを連番を付けて作成していてそれに同じ操作を全部やるとき、excelで編集してコマンドリストを作っていたが、shellでやるほうが簡単なので、その覚え書き seq -w 0 42 | xargs -i echo "python3 seq.py TAIR10_cdna_20101214_updated.fa.split/TAIR10…

ファイルのディレクトリ構成をまとめて変更する

for f in */Ab/hisat_results/*sort* ; do mv $f hisat_results/Ab ; doneカレントディレクトリから個別のディレクトリの奥の方にあるsortというワードの入ったファイルをhisat_results/Abというディレクトリにまとめて移動

文字列の大文字を小文字に変換するには

アノテーションファイルと解析結果のファイルで書式が結構違っていて、検索プログラムでうまくリンクしてくれない。そこで、テキストの整形、変換をいろいろと行うのでそのメモ大文字を小文字に AT1G12345をat1g12345に置き換えるには $ cat text.txt | tr '…

複数の列でsort

excelなどでは普通に行える文字列のソート。shellコマンドでいくつかの列を順にたどってソートするにはkオプションを使うらしい。例えば AT1G01000.1:139:G:A AT1G01000.1:274:T:G AT1G01000.1:1033:T:A AT1G01000.1:1034:T:C AT1G01000.1:1027:C:A AT1G0100…

塩基単位でのread depthを求める

以前BEDToolsのcoverageBedでdepthを各塩基ごとに求める方法を書いた。 $ coverageBed -a genome.bed -b sample.bed -dというのが基本書式だ。 genome.bedはreference.fasta.faiから $ awk '{print $1"\t0\t"$2}' reference.fasta.fai > genome.bedという感…

2つのファイルを比較して、一方に含まれる文字列を他方から抽出

a.txt AT1G01000:10 AT1G01000:15 AT1G01000:20 AT1G01000:25 AT1G01001:10 AT1G01001:15 AT1G01001:20 AT1G01001:25 AT1G01002:10 AT1G01002:15 AT1G01002:20 AT1G01002:25 AT1G01003:10 AT1G01003:15 AT1G01003:20 AT1G01003:25 AT1G01004:10 AT1G01004:15…

文字列内に変数を展開してコマンドを投げる。

Pythonからshellスクリプトを実行するとして、shellに変数を渡したいときはどうすればいいのか? cmd = "ls /data/file/folder/*/*.bam > list.txt" subprocess.call(cmd, shell=True)この/data/file/folder/*/*.bamをPythonから引数として渡したい。 そうい…

リンクファイルを自動で作成するスクリプト

まずリンク元のファイルをlsで列挙する ls /data/file/folder/*/*.bam > list.txtつぎにsedで行頭に'ln -s'をくっつける sed -e "s/^/ln -s /" list.txt >list_tmp.txtファイル名だけを取り出して列記する ls /data/file/folder/*/*.bam | xargs -i basename…

MySQLにTSVファイルをインポート

$ mysqlimport -u ユーザー名 --password=パスワード --local データベース名 テーブル名.txtであり、.my.cnfをホームディレクトリに [mysqlimport] user=ユーザー名 password=パスワード default-character-set=utf8 localこんな感じで作っておけば $ mysql…

tableへのデータアップデートを考える

とにかく行数が増えてくるとsqlのupdateのスピードがかなり負担になってくる。なのでテキスト処理だけで大方のカラム整形をやって、一部分だけsql文でなんとかする方法を考えた。特に、今後私の手を離れた後にメンテナンスが容易なように、スクリプトでちょ…

小ネタ

行数カウント $ wc -l file.txt 1024 file.txtひたすら連番を縦に並べたファイルを作る id.sh for i in $(seq 1 1024) do echo $i >> id.txt doneただしこの方法では100万行を超えると1.00000e+06のように表記されてしまい、10件ずつ同じになってしまうよう…

変数設定の覚え

#!/bin/sh #csvファイルから実験名(alias, 2列目)を取り出し、コンマ区切りで並べて変数に格納 cut -d ',' -f 2 csvtest.csv | sed -e '1d' >tmp.txt list=$(paste -s -d ',' tmp.txt) echo $listcsvから変数を取り出す アレイジョブ編 #!/bin/sh #$ -cwd …