Bashは2つのリストを比較して、欠落している項目を見つけます。

Bashは2つのリストを比較して、欠落している項目を見つけます。

以下は、2つのサンプルファイルのリストです。 (ファイル)ファイルのリスト(最後の「/」の右側の各レコードの最後の「X」文字)を比較する必要があります。

ファイル名が見つからない場合は、行全体を3番目のファイルに出力に送信する必要があります。

これはファイルのリストです。 2番目のリストには3つのファイルがあり、最初のリストには2,000のファイルがあります。
最初のもの:
1 /home/dev/share/Datafiles/cases.dbf
2 /home/dev/share/Datafiles/cells.csv
3 /home/dev/share/Datafiles/clusters.db
4 /home/dev/share/データファイル/competition.csv
5 /home/dev/share/Datafiles/coplot.csv
6 /home/dev/share/Datafiles/daphnia.csv
7 /home/dev/share/Datafiles/das.txt
8 /home/dev /share /Datafiles/deaths.sas7bdat
9 /home/dev/share/Datafiles/decay.csv
10 /home/dev/share/Datafiles/example.db
11 /home/dev/share/Datafiles/fertyield.lst
12 /home /dev /share/Datafiles/fisher.csv

2つ:
1 /test/kitchen/cooks/transfer/cases.dbf
2 /test/kitchen/cooks/transfer/cells.csv
3 /test/kitchen/cooks/transfer/clusters.db
4 /test/kitchen/cooks/ transfer /coplot.csv
5 /test/kitchen/cooks/transfer/das.txt
6 /test/kitchen/cooks/transfer/deaths.sas7bdat
7 /test/kitchen/cooks/transfer/decay.csv
8 /test/kitchen/ cooks /transfer/example.db
9 /test/kitchen/cooks/transfer/fertyield.lst
10 /test/kitchen/cooks/transfer/fisher.csv

リスト1にはあるがリスト2にはない2つのファイル:「Competition.csv」(#4)と「daphinia.csv」(#6)。

ファイルの並べ替えが機能しないため、ファイルパスが非常に短くなったり長くなったり、ファイルの複数のコピーが複数のディレクトリにあることがあります。

Comm/diff/cmpは、各行の右側にある最後の「X」文字(ファイル名、拡張子ベース)のみを探しているため、満足のいく結果が得られません。
(Microsfot EXCELではすべてを右に抽出します。)最後の「/」を1行ずつ別のリストに保存し、そのリストを最初のリストと一緒にVLOOKUPします。 )

ただし、これはマイクロソフトのインストールではありません。

リスト(ファイル)2の内容とリスト(ファイル)1を検索するスクリプト、出力がファイル3と一致しませんか?

また、sedを使用してディレクトリ名を解析し、2つのファイル名のリストのみを残すことは困難です。毎回違うので、どのルートを置き換えたいのかわかりません。切り取りしようとしましたが、ファイル名の先頭は列10から列150まで可能です。私の直感は、ファイルパスの最後の「/」の右側にあるすべての文字を分離する方法があることです。

それではまた私が間違っているかもしれません。

答え1

使用grep:

grep -F -x -v -f <(grep -o '[^/]*$' file2) <(grep -o '[^/]*$' file1) > file3

内側の2つはgrep各行のファイル名部分(最後の行以降のすべての項目/)を返し、外部grep項目は最初の内部の出力を2番目のパラメータのgrepパターン入力ファイル()として使用します。-f

つまり、file1のfile2のすべてのファイル名を逆順に返します(-v)。出力はfile3にリダイレクトされます。オプション-Fは、正規表現の代わりに固定文字列を一致させ、行-x全体を一致させるために使用されます。

コンテンツfile3:

$ cat file3
competition.csv
daphnia.csv

関連情報