よく使うものをリストアップしてみました.創薬は直接関係しません,データ処理等で多少は参考になるかと..
findコマンド関連
ある文字列を含むファイルを検索
$ find . -print0 | xargs -0 grep strings
ファイル名に文字列を含む/含まないファイルを検索
$ find . -name “*strings*” -print
$ find . ! -name “*strings*” -print
実行可能ファイルを検索してbinディレクトリへコピー
$ find . -type f -executable -exec cp {} bin \;
ファイルのフルパスを取得
$ find `pwd`
-maxdepth 1 -type f
$ ls -dF `pwd`
/*
ファイルサイズが非ゼロのファイルを検索
$ find . -type f ! -size 0
$ find . -type f ! -size 0 | tr ‘\n’ ‘ ‘
grepコマンド関連
コメント行(行頭#)と空白行を削除
$ grep -E -v ‘^#|^$’ sample.txt
複数パターンマッチを表示
$ grep -E ABC\|KLM\|XYZ sample.txt
文字列を含まないファイルを出力
$ grep -L strings *
sed関連
ファイル内の文字列を一括置換
$ sed -e s/before/after/g sample.txt
指定行のみ表示(10~20行)(-nでパターンスペース自動表示を抑制)
$ sed -n ‘10,20p’ sample.txt
指定行から最終行まで表示(15〜最終行)
$ sed -n ’15,$p’ sample.txt
ある文字列を含む行のみを表示
$ sed -n -e ‘/abc/p’ sample.txt
ある文字列を含む行を削除(-iで直接編集,-i[suffix]でバックアップ作成)
$ sed -e ‘/abc/d’ sample.txt
$ sed -i -e ‘/abc/d’ sample.txt
$ sed -i.bk -e ‘/abc/d’ sample.txt
1行目(insert)/3行目(append)に文字列を挿入
$ sed -i -e ‘1i comment’ sample.txt
$ sed -i -e ‘3a comment’ sample.txt
指定行範囲の文字列を置換(10〜20行)
$ sed -e ‘10,20s/abc/ABC/’ sample.txt
awk関連
指定フィールドを出力(セパレータがコロンの場合)
$ awk -F: ‘{print $7;}’ /etc/passwd
偶数行/奇数行のみ出力
$ awk ‘NR % 2 == 0’ sample.txt
$ awk ‘NR % 2 != 0’ sample.txt
行数(NR)とフィールド数(NF),最終列の値の出力
$ awk ‘{print NR, NF;}’ sample.txt
$ awk ‘{print $NF;}’ sample.txt
足し算
$ seq 10 | awk ‘BEGIN{sum=0}{sum=sum+$1}END{print sum}’
vi関連
空白行の削除(exモード)
:v/\S/d
mapを使ったデータの並び替え
$ cat data.txt
X1 Y1 Y2 Y3
Y4 Y5 Y6
Y7 Y8 Y9
X2 Y1 Y2 Y3
Y4 Y5 Y6
Y7 Y8 Y9
$vi data.txt
:map K 3JjK
vi起動後mapを定義(3行分の改行を削除し一行下がる,を繰り返す)し,1Gとして1行目に移動した後,Kキーを押下.すると次のようにデータが並び替えられる.
X1 Y1 Y2 Y3 Y4 Y5 Y6 Y7 Y8 Y9
X2 Y1 Y2 Y3 Y4 Y5 Y6 Y7 Y8 Y9
mapを使ったある範囲列の削除の例.”行頭に移動(0)、2Word進む(2W)、3Word消す(d3W)、1行下に移動(j)”を繰り返す(K).
:map K 02Wd3WjK
その他
テキストファイルの文字数カウント
$ cat sample.txt | tr ‘ ‘ ‘\n’ | sort | uniq -c | sort -nr
BoM(Byte Order Mark)の削除
$ sed -i -e ‘1s/^\xef\xbb\xbf//’ sample.txt
$ cat sample.txt | awk ‘{if(NR==1)sub(/^\xef\xbb\xbf/,””);print}’
$ vi -b sample.txt
rpmパッケージの抽出
$ rpm2cpio package.rpm | cpio -ivd
テキストファイルの行のシャッフル,ランダムな数値を出力
$ shuf sample.txt
$ shuf -e 1 2 3 4 5
$ shuf -i 1-100
$ shuf -i 1-100 -n 10
文字コードの変換(e.g. EUC-JPからUTF-8へ)
$ iconv -f EUC-JP -t UTF-8 input.txt > output.txt
カレントシェル,ログインシェルの確認
$ ps $$
$ echo $SHELL
timeコマンドで出力形式を指定
$ /usr/bin/time -f “%C cmd %e real %U user %S sys %P CPU %M Max %I In %O Out %W swp %x status” sleep 1
dateコマンドで出力形式を指定
$ date +%F
$ date +%D
$ date +%Y%m%d
サポートされるファイルシステムを表示
$ cat /proc/filesystems
Category: Linux関連