bashで1つのファイルを繰り返すが、別のファイルの順序に基づいた方法は何ですか?

bashで1つのファイルを繰り返すが、別のファイルの順序に基づいた方法は何ですか?

次のファイルがあるとしますDependencies

Accounts
Blog
Configuration
Contacts
Entities
Faqs
Forms
Galleries
Geo
Globalization
Logs
Media
Navigation
Notifications
Orders
Payment
Places
Pricing
Products
Sales
Seo
Services
Shipment
Social
Subscriptions
Taxonomy
Ticketing

さまざまな方法を使用してこれを繰り返し、各行を変数にして操作を実行できます。

Orderただし、次のような名前の異なるファイルがあります。

Entities
Globalization
Configuration
Accounts
Contacts
Taxonomy
Geo
Media
Places
Products
Services
Orders
Shipment
Payment
Sales
Social

これは、ファイルで指定された順序Dependenciesで行をロードする必要があることを意味します。Orderファイルに行がない場合はOrderリストの最後に移動し、順序は重要ではありません。

dependencies.OrderBy(i => orders.IndexOf(i))C#では、指定された順序で依存関係を簡単に一覧表示できます。

しかし、bashでこれを行う方法がわかりません。

ベストアンサー1

私は各行が一意でDependenciesあると仮定します。についても同様ですOrder。この仮定はあなたのユースケースに適しているようです。

次のように呼び出します。

grep -xFf Dependencies Order; grep -vxFf Order Dependencies

最初は in と in の行を から順にgrep提供します。DependenciesOrderOrder

2 番目は にあるが にはない行をgrep提供します。これは印刷されていない最初の行です。DependenciesOrderDependenciesgrep

すべての行の合計がDependencies表示されます。

Dependenciesからまたはで繰り返される行が出力Orderに複数回表示されることがありますが、 とまったく同じ数を持たない可能性があるため、一意性の前提が関連しますDependencies。出力の数はgrep印刷位置によって異なります。

おすすめ記事