A
2つのソートされたファイルがあり、B
サイズがA
はるかに大きいですB
。たとえば、Aは100GB、Bは50MBです。欲しい早くの行B
がに含まれていることを確認し、一致するA
ものがあれば停止します。現在、この目的のためのPythonスクリプトがありますが、他のプロセスに対して何千回もプロセスを繰り返す必要がある場合は遅くなりますB
。
ベストアンサー1
を使用すると、fifoを使用してcomm
最初の一致でスクリプトを返すことができます。head
#!/bin/bash -e
[ -p tmpfifo ] || mkfifo tmpfifo
comm -12 A B | head -n1 >tmpfifo &
# If this wc is zero, no matches. Otherwise, a match was found.
# You can use this directly in the script, echo it,
# change the script exit value, or however else you need to use it.
wc -l tmpfifo
現在、これはバックグラウンドで通信を続けており、PID
殺す権利(殺人ではなく$!
与えるもの)を見つけるのに苦労しています。これが実行中の唯一の通信であると確信している場合は機能しますが、他の通信が実行されている場合は危険です。 head
comm
killall