open usp まとめてみた

以下の30行は、日経Linux2012/3月号からの抜粋

-行のセレクト
-列のセレクト
-データのソート
-マッチング
-マッチングと連結(1)
-マッチングと連結(2)
-サムアップ
-行単位のサムアップ
-項目間の演算
-コード変換
-CSVファイルへの変換
-タグだけを変換
-表形式に変換
-任意の形式に変換
-大小、全半角変換
-桁揃え
-数値のカンマ区切り
-ダミーデータ作成
-レポート作成(1)
-レポート作成のCSV化
-レポート作成(2)
-レポート作成(3)
-データ検索(1)
-データ検索(2)
-データ検索(3)
-データ検索(4)
-データ変更
-ファイルの排他制御
-エラー処理
-Webアプリケーション


この記事にでてくるunixコマンド、Openuspコマンドを抜き出してみたのさ


-------------------------------

-行のセレクト
  awk
  head
  tail
  ctail(openusp)
  grep

-列のセレクト
  self(openusp)
  self f1 f2 ... file
  self -d f1 f2 ... string  -dはダイレクトモードみたい
>||
$ self 4 2 data  .. like print $4 and $2
$ self 1.4 2 data   .
$ self 2.1.4 3 data
$ self 0 data  ..   print all records
$ self 4 0 data     $4 and $0
$ self 2/5 data  .. $2,3,4,5
$ self 1 NF-3 NF data
$ self 1/NF data2 ... 整形するのとおんなじか?
$ self -d 1.1.4 "20070401 12345"  ... 2007
$ echo アイウエオカキクケコ | self 1.3.4  ... ウエオカ
$ echo USP研究所 | self 1.2.4 .. error
$ echo USP研究所 | self 1.20 .. error

delf(openusp)
delf f1 f2 ... file
delf -d f1 f2 ... string -dはデイレクトモードみたい

  • データのソート

sort ( defaultは 辞書?"string sort" sort -u は "sort | uniq"とおんなじか?
-f ignore-case)
sort -r .. r means "reverse sort"
sort -k1,1
sort -k3,3n .. n means "number sort"

-k POS1[,POS2] ソートフィールド指定の POSIX形式。
行の POS1 から POS2までのフィールドを指定する。
POS2 を含む。 POS2 が省略されたら行末まで。

  • マッチング

join
join1と機能的には似ているみたいだけど、joinがあればjoin1いらなくない?
join -1 -2 leftfile rightfile

-v FILE-NUMBER FILE-NUMBER (1 or 2)ファイルにある、
ペアにならなかった行だけを表示する

join0(openusp) ... join0 [+ng] key=
master-keyフィールドとマッチする(tran)行 を抽出
cat tran | sed '/master-key/p' って感じか?
inner-join相当
join1(openusp) ... join1 [+ng] key=
master-keyフィールドとマッチする(master+tran)行 を抽出)
inner-join相当

join2(openusp) ... join1 [+] key=
master-keyフィールドとマッチする(master+tran)行 を抽出)
&
master-keyフィールドとマッチしない(dammydata+tran)行 を抽出)
outer-join(right join)相当

loopj(openusp) ... loopj [-d] num= ...
複数のテキストファイル全行を連結
outer-join(full join)相当
numオプションは、各表の1列目から列目までを key指定する

-dオプションははフィールドが存在しない場合に置換される文字列
(default '0')
(-dは,python版からavailable,C版にはないみたい、直せってかw)
num = keyの総数を指定する。
予めsortしとかないと期待通りにはうごかないかも

loopx(openusp) ... ってもある。(pythonから、Cにはない)
直行表作成だってさ


まとめると
join .. inter-join(多機能
join0 .. inter-join(select right.some ってかんじかな
join1 .. inter-join(select right.some,left.some って感じかな
join2 .. outer-right-join
loopj .. outer-full-join
loopx .. なんだろね?わかんねw


outjointの使い方的には
cat tran |
join2 master_01 |
join2 master_02 > result

って感じでouter-right-joinってことらしい。なるほど

>||
[hirasawa@cent6-hira usp-unicage-work]$ cat file1.txt
1 a A
2 b B
[hirasawa@cent6-hira usp-unicage-work]$ cat file2.txt
2 b B
1 a A
[hirasawa@cent6-hira usp-unicage-work]$ loopj num=1 file1.txt file2.txt
1 a A 0 0
2 b B b B
1 0 0 a A
[hirasawa@cent6-hira usp-unicage-work]$ sort -k1,1 file2.txt | loopj num=1
file1
.txt -
1 a A a A
2 b B b B
[hirasawa@cent6-hira usp-unicage-work]$
|