私はこれをテストしました、それは動作します。行の順序は各ファイル内で維持されていませんが、コメントで既に適用していると述べたsort
ので、それは問題ではありません。少し回り道ですが、うまくいきます:
#!/bin/bash
#The number of files you have, named like file1.txt, file2.txt, etc.
# If named otherwise, cahnge the definition of variable "file" in the loop below.
NUM_FILES=3
#These files will be created and removed during the script, so make sure they're
# not files you already have around.
tempfile1="_all.txt"
tempfile2="_tmp.txt"
sort -u file1.txt > file1out.txt
cat file1out.txt > $tempfile1
for i in $(seq 2 $NUM_FILES)
do
prev=$((i-1))
pofile="file${prev}out.txt"
file="file$i.txt"
ofile="file${i}out.txt"
echo "Input files: $file $pofile"
echo "Output file: $ofile"
cat $tempfile1 $pofile > $tempfile2
sort -u $tempfile2 > $tempfile1
sort -u $file | comm -23 - $tempfile1 > $ofile
done
rm -f $tempfile1 $tempfile2