uspTukubaiコマンドに関する様々な資料がここにあります。

 

 

魂内検索

DOCUMENTS

COMMAND

FORUM

UEC DOCS

VIDEO

 

ABC順リスト |  カテゴリ別リスト
動画説明

sorter

概要

sorter : キーでファイル分割する (キーについてソート不要)

書式

Usage : sorter [options]
Options : -d : delete key
    -a : append file
    -z : compress
    -s : stroge size
Version : Thu Mar 29 21:49:20 JST 2018
Edition : 1

説明

<file> を読み込み、分割先ファイル名 <filename> で指定したキーフィールドの値が同一のレコードでファイルを分割します。例えば、第2フィールドが同じ値を持つレコードで、ファイルを分割したいときは、data.%2 のように、<filename> を指定します。この時、分割先ファイル名は、data.(第2フィールドの値) となります。sorter は keycut と異なり、キーフィールドの値はソートされている必要はありません。

<filename> におけるキーフィールドは、%(フィールド番号)と指定しますが、%5.2 %5.1.3 のように、サブストリング指定も可能です。

%指定において、%1.5 を %{1.5} のように {} で範囲を明確にして記述することができます。この場合、桁数の制限はありません。また、負数を指定することもできます。開始位置に負数を指定した場合は、フィールド末尾か らの指定になります。長さに負数を指定した場合は、フィールド長から引いた長さになります。

例1

$ cat data
04 神奈川県 13 横浜市 92 56 83 96 75
01 埼玉県 03 熊谷市 82 0 23 84 10
03 千葉県 10 千葉市 52 91 44 9 0
02 東京都 04 新宿区 30 50 71 36 30
01 埼玉県 01 さいたま市 91 59 20 76 54
03 千葉県 12 柏市 95 60 35 93 76
04 神奈川県 16 小田原市 45 21 24 39 03
02 東京都 05 中央区 78 13 44 28 51

$ sorter data.%1 data
$ ls -l data.*
-rw-r--r-- 1 usp usp 87 2月 19 11:14 data.01 ↑
-rw-r--r-- 1 usp usp 82 2月 19 11:14 data.02 4つのファイルに
-rw-r--r-- 1 usp usp 77 2月 19 11:14 data.03 分割された
-rw-r--r-- 1 usp usp 91 2月 19 11:14 data.04 ↓

$ cat data.01
01 埼玉県 03 熊谷市 82 0 23 84 10
01 埼玉県 01 さいたま市 91 59 20 76 54

$ cat data.02
02 東京都 04 新宿区 30 50 71 36 30
02 東京都 05 中央区 78 13 44 28 51

$ cat data.03
03 千葉県 10 千葉市 52 91 44 9 0
03 千葉県 12 柏市 95 60 35 93 76

$ cat data.04
04 神奈川県 13 横浜市 92 56 83 96 75
04 神奈川県 16 小田原市 45 21 24 39 03

例2

(サブストリング指定)

$ sorter data.%1.2.1 data
$ ls -l data.*
-rw-r--r-- 1 usp usp 87 2月 19 11:15 data.1
-rw-r--r-- 1 usp usp 82 2月 19 11:15 data.2
-rw-r--r-- 1 usp usp 77 2月 19 11:15 data.3
-rw-r--r-- 1 usp usp 91 2月 19 11:15 data.4

例3

(-a 指定)

-a オプションを指定すると、分割先ファイルは追記されます。分割先ファイルが無いときは、新たに作成されます。このオプションを指定しないときは、ファイルは上書きになりま す。

$ sorter data.%1 data
$ sorter -a data.%1 data
$ ls -l data.*
-rw-r--r-- 1 usp usp 174 2月 19 11:16 data.01
-rw-r--r-- 1 usp usp 164 2月 19 11:16 data.02
-rw-r--r-- 1 usp usp 154 2月 19 11:16 data.03
-rw-r--r-- 1 usp usp 182 2月 19 11:16 data.04

$ cat data.01
01 埼玉県 03 熊谷市 82 0 23 84 10
01 埼玉県 01 さいたま市 91 59 20 76 54
01 埼玉県 03 熊谷市 82 0 23 84 10
01 埼玉県 01 さいたま市 91 59 20 76 54

例4

(-d 指定)

-d オプションを指定すると、キーフィールドを除いたレコードを分割先ファイルに作成します。キーフィールド指定が %1.2.1 等のサブストリグン指定であっても、キーフィールド全体(この例だと第1フィールド全体)が取り除かれます。

$ sorter -d data.%1 data
$ ls -l data.*
-rw-r--r-- 1 usp usp 81 2月 19 13:13 data.01
-rw-r--r-- 1 usp usp 76 2月 19 13:13 data.02
-rw-r--r-- 1 usp usp 71 2月 19 13:13 data.03
-rw-r--r-- 1 usp usp 85 2月 19 13:13 data.04

$ cat data.01
埼玉県 03 熊谷市 82 0 23 84 10
埼玉県 01 さいたま市 91 59 20 76 54

例5

(-z 指定)

-z オプションを指定すると、出力ファイルが gzip 圧縮形式になります。

$ sorter -z data.%1.gz data
$ ls -l data.*
-rw-r--r-- 1 usp usp 98 2月 19 13:17 data.01.gz
-rw-r--r-- 1 usp usp 94 2月 19 13:17 data.02.gz
-rw-r--r-- 1 usp usp 82 2月 19 13:17 data.03.gz
-rw-r--r-- 1 usp usp 100 2月 19 13:17 data.04.gz

$ gunzip < data.01.gz
01 埼玉県 03 熊谷市 82 0 23 84 10
01 埼玉県 01 さいたま市 91 59 20 76 54

備考1

sorter.c は zlib を使用しています。コンパイル時は、$ cc -static -O3 -o /home/TOOL/sorter sorter.c -lzとしてください。

備考2

-a オプションと -z を併用したときは、すでに存在する圧縮ファイルに、圧縮ファイルが追記されます。出来上がった結果のファイルは、gunzip で正しく解凍されます。

備考3

基本的には入力ファイルをすべて読み込んでから処理します。ただし、メモリが不足したとき及び物理メモリの半分以上を使用した場合は、一旦ファイルへ出力してから処理を続 行します。-s オプションを指定すると、使用メモリ量が指定値になった場合にも、中間ファイル出力を行います。メモリ量の指定は MB 単位(例 -s 512M)と GB 単位(例 -s 5G)のいずれかで行います。