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
-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 [+
master-keyフィールドとマッチする(master+tran)行 を抽出)
&
master-keyフィールドとマッチしない(dammydata+tran)行 を抽出)
outer-join(right join)相当
loopj(openusp) ... loopj [-d
複数のテキストファイル全行を連結
outer-join(full join)相当
numオプションは、各表の1列目から
-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]$
|