理科系の勉強日記

Linux/Ubuntu/Mac/Emacs/Computer vision/Robotics

UNIX

シェルスクリプトで可変長データを読み取る

はじめに こんなデータに出くわした。data.txtとする。 1, hoge, foo, bar, piyo, [ID: 1; a; b; c; d;ID: 2; a; b; c; d;ID: 3; a; b; c; d;ID: 4; a; b; c; d;ID: 5; a; b; c; d;] 2, hoge, foo, bar, piyo, [ID: 1; a; b; c; d;] 3, hoge, foo, bar, piyo…

awkでユーザ定義関数

awkには絶対値を返すabs()関数がないようだ。 ユーザ定義関数は以下のようにして定義可能。 seq 1 10 | awk '{print abs(-$1)} function abs(x){return (x>0)? x:-x}

stdout: Broken pipe

gnuplot> plot "<cat vec.dat | head -23" using 3 with linevec.datは30万行を超えるデータである.catの結果をパイプでheadに渡すと cat: stdout: Broken pipeなどと仰った.パイプが壊れたようだ.これはcatの結果が30万行と膨大で,その結果が終わるまでにheadを読み込んでいるためと思われる.そもそもcatの後にhaedをする必要は無い.正しくは gnuplot> plot "</cat>

gnuplotでplot for

gnuplotでは,複数個のグラフをfor文を用いてplotすることができる.例えば,手元に連番ファイル「00.dat, 01.dat, ... , 09.dat」があったとする.for文を使わない場合は plot "00.dat" u 1:2 with lp title "data 00" replot "00.dat" u 1:2 with lp title…

シェルで行列を転置

以下の様なデータ(data.txt)をシェルで転置する. 0 615276 615276 615276 615276 615276 615276 615276 615276 0.1 580455 587213 587232 589734 590158 591019 592493 596381 0.2 500342 522058 521903 530142 531954 534774 539629 552938 0.3 426424 458…

連番のファイル名を変換する

連番画像のファイル名を一気に変えるコマンド. lsで表示したものに番号を振り,それを入力としてawkでコマンドを形成,shで実行する. ls *ppm | cat -n | awk '{printf "cp %s img_%04d.ppm\n", $2, $1}' | shshをevalにすると上手くいかない. (shだと毎…

UNIXコマンドメモ

http://unicus.jp/skmk/archives/315

convertで一括変換

for f in *.png; do convert -trim $f `echo $f | sed s/png/eps/g` ; doneabc.pngをabc.epsに変換するコマンド.

grepで,カレントディレクトリ以下で特定の文字が含まれるファイルを列挙

grep -Er --binary-files=without-match --exclude=Capfile 'runRANSAC' .

bashの関数とか

忘れないうちにメモ. bashの関数作成 $ function plus() {echo $(($1 + $2));} $ plus 2 3 5functionの後に上記のように書くことで関数を定義できる. main関数の返り値 $ grep ll.dat < ll.dat || echo "not found." -rw-r--r-- 1 hogehoge staff 0 6 27 1…

awkとかsedとか

AWKはUNIX上で開発されたテキスト処理スクリプト言語である.sed,grepと並んで3種の神器なんて呼ばれていたこともあるそうです.今回はawkのGNU版であるgawkを使う. awkによる行・列の指定 -rw-r--r-- 1 hogehoge staff 21 6 27 14:55 #blog_draft# drwx--…

ffmpegで連番画像を動画に変換,動画を連番画像に変換

ffmpegを使えば,連番画像から簡単に動画を作ることができる.逆に,動画から連番画像をつくることもできる. ffmpegはよく使っていたにもかかわらず,自分はこの事実を知らなかった.お陰で上記の変換をするプログラムをOpenCVで自作していた... ffmpeg -r …

ImageMagickでmontage

映像を扱っていると,紙面上に結果を掲載するときにどうしても連番画像をタイル状に並べることが必要となる. このときImageMagickのmontageが非常に便利である. $ montage -tile 20x2 -resize 25% -geometry +2+2 -crop -3-3 -shadow img_0.png img_1.png.…

UNIXコマンド umout

取り出したいデバイスのあるディレクトリで sudo umount ./16GB_USBとすればアンマウントできる.もし何か別のプロセスがアクセスしていれば umount(/Volumes/16GB_USB): Resource busy -- try 'diskutil unmount'などとでる.プロセスを調べても良いし書い…

sshによるPort Forwardingとrsync

Port Forwarding Portforwardingとは,ローカルの特定のポートへのアクセスを別のマシンの指定したポートへ転送することである. Linuxではssh(Secure SHell)によって実現することができる. ssh -fN -L1101:[Remote2]:22 [Remote1] -l [username]root権限で…

シンボリックリンクのメモ

シンボリックリンクの張り方 ln -s [リンク元] [シンボリックリンク]ライブラリを追加する際にシンボリックリンクをはることになったが,ぱっと思い出せなかったのでメモ. $ sudo ln -s /home/nkgwww/foo-1.2/libfoo.1.2.so /usr/lib/libfoo.so -s : シンボ…