「追加-e」とはどういう意味ですか?

「追加-e」とはどういう意味ですか?

coreutilsのマニュアルで学んだ。join

-e string

入力から欠落している出力フィールドを文字列に置き換えます。つまり、-12joオプションで指定されたフィールドがありません。

私はこのオプションをまったく理解していません。次はどういう意味ですか?

  • 「入力に出力フィールドがありません」

  • 「-12joオプションで指定されたフィールドがありません」?

ありがとうございます。

答え1

少し秘密の文字列は、、、および-12jo4つの個別のオプションを表します。そのうち最初の3つは各ファイルに含めるフィールドを選択することに関連し、最後は各ファイルのどのフィールドを出力するかを選択することに関連します。このオプションはGNUの拡張であり、ここで整数はどこにあるかと同じです。-1-2-j-o-jjoin-j n-1 n -2 nn

このオプションは、要求のインポートを使用するときに-e適用されます。-aペアリングされていない参加している1つまたは2つのファイルの行。あるファイルの行が他のファイルの行と一致しないため、ペアになっていない行はデータを失います。この-eオプションは、これらのフィールドを指定された文字列に置き換えます。同様に-o、要求ファイルの特定の行に存在しないフィールドを使用している場合は、-enull値を文字列に置き換えることができます。

例:2つのファイルには、複数の製品の製造コストと販売収益が含まれています。各ファイルにはフィールドがあります。

  1. 製品番号
  2. 商品名
  3. いくつかの数
$ cat expenses.txt
1   teacup  5
2   spoon   7
3   bowl    10

$ cat sales.txt
1   teacup  30
2   spoon   24

手数料を受けるためにそしてすべての製品の販売、文字列(最初のファイルまたは2番目のファイル)から欠落している可能性がある数字を変更しながら、次の操作をNONE行います。

$ join -a1 -a2 -o0,1.2,1.3,2.3 -e NONE expenses.txt sales.txt
1 teacup 5 30
2 spoon 7 24
3 bowl 10 NONE

ここでは、この-aオプションを2回使用して両方のファイルのすべての行を要求します(SQLの「完全外部結合」)。この-oオプションは、各ファイルから特定のフィールドを取得するために使用されます(フィールドはデフォルトで各0ファイルの最初のフィールドである連結フィールドです)、欠落値を-e置き換えるために使用される文字列を指定します。NONE

ご覧のNONEとおり、ID 3の商品が2番目のファイルに記載されていないため、「Sales Value」を取得します。

関連情報