「loopj」の版間の差分
ナビゲーションに移動
検索に移動
Pt4a editor (トーク | 投稿記録) 細 (Batch Update) |
Pt4a editor (トーク | 投稿記録) 細 (Batch Update) |
||
14行目: | 14行目: | ||
== 説明 == | == 説明 == | ||
− | + | 引数で指定した複数のファイルを、第1フィールドから num=<n> で指定したフィールドまでをキーにして全て連結します。各ファイルの中でキーフィールドがマッチングしないレコードについては、それぞれ “0” でフィールドを補完します。 | |
連結する各ファイルは0バイトより大きく、キーとなるフィールドはユニークかつ昇順でソートされていることが条件になります。 | 連結する各ファイルは0バイトより大きく、キーとなるフィールドはユニークかつ昇順でソートされていることが条件になります。 | ||
119行目: | 119行目: | ||
© 2021 Universal Shell Programming Laboratory [https://www.usp-lab.com/ site] | © 2021 Universal Shell Programming Laboratory [https://www.usp-lab.com/ site] | ||
− | |||
[[Category:man]] | [[Category:man]] |
2021年6月7日 (月) 08:37時点における版
名前
loopj : 複数のテキストファイルの全てのレコードを連結する。
loopj = loop of join3
書式
使い方とオプション
Usage
loopj [-d<string>] num=<num> <file1> <file2> ..
説明
引数で指定した複数のファイルを、第1フィールドから num=<n> で指定したフィールドまでをキーにして全て連結します。各ファイルの中でキーフィールドがマッチングしないレコードについては、それぞれ “0” でフィールドを補完します。
連結する各ファイルは0バイトより大きく、キーとなるフィールドはユニークかつ昇順でソートされていることが条件になります。
<file> が0バイトファイルの場合エラーとなります。
例(その1)
基本的な使い方
(file1) 0000003 杉山______ A 0000005 崎村______ B 0000007 梶川______ C 0000010 柳本______ D (file2) 0000000 50 0000003 26 0000004 40 0000009 68 (file3) 0000000 F 0000003 F 0000004 M 0000005 F
3つのファイルを連結する。
$ loopj num=1 file1 file2 file3 > data (data) 0000000 0 0 50 F 0000003 杉山______ A 26 F 0000004 0 0 40 M 0000005 崎村______ B 0 F 0000007 梶川______ C 0 0 0000009 0 0 68 0 0000010 柳本______ D 0 0
ファイル名が “-” の場合は標準入力を連結します。
$ cat file2 | loopj num=1 file1 - file3
例(その2)
-d オプション 補完する文字列を指定できます。
$ loopj -d@@@ num=1 file1 file2 file3 > data $ cat data 0000000 @@@ @@@ 50 F 0000003 杉山______ A 26 F 0000004 @@@ @@@ 40 M 0000005 崎村______ B @@@ F 0000007 梶川______ C @@@ @@@ 0000009 @@@ @@@ 68 @@@ 0000010 柳本______ D @@@ @@@
例(その3)
キーのみを持つファイルを連結すると、値のみを補完します。
$ cat file1 0001 1 0002 2 $ cat file2 0001 0002 0003 0004 $ loopj num=1 file1 file2 あるいは $ loopj num=1 file2 file1 0001 1 0002 2 0003 0 0004 0 $ loopj num=1 file2 file2 0001 0002 0003 0004
注意
連結するファイルが0バイトの時はエラーになります。
$ : > data1 $ cat data2 a 1 b 2 c 3 $ loopj num=1 data1 data2 Error(605)[loopj] : cannot join empty file(data1).
上記の例で data1 が例えば3フィールドあることを保証するには
$ [ ! -s data1 ] && echo x 0 0 > data1 $ loopj num=1 data1 data2 | awk '$1 !~ /x/' a 0 0 1 b 0 0 2 c 0 0 3
Version and Edition
Version : Thu Jan 14 11:01:02 JST 2021
Edition : 1
© 2021 Universal Shell Programming Laboratory site