Можно использовать kpartx
для этого. Вот способ создать полный образ диска.
# create empty image
dd if=/dev/zero of=myvm.img bs=1G count=0 seek=100
# partition the image file with fdisk/gdisk or any other tool
gdisk myvm.img
# make the partitions in the image file available as individual devices
kpartx -a myvm.img
# work with the partitions
./someprogram /dev/mapper/loop0p1
# close the partitions
kpartx -d myvm.img
Если то содержание файла называют file1
, file2
и file3
в порядке появления затем можно сделать это со следующей остротой:
# python -c "x=open('file1').read(); y=open('file2').read(); print x in y or y in x"
True
# python -c "x=open('file2').read(); y=open('file1').read(); print x in y or y in x"
True
# python -c "x=open('file1').read(); y=open('file3').read(); print x in y or y in x"
False
Я нашел решение благодаря этому вопросу
В основном я тестирую два файла a.txt
и b.txt
с этим сценарием:
#!/bin/bash
first_cmp=$(diff --unchanged-line-format= --old-line-format= --new-line-format='%L' "$1" "$2" | wc -l)
second_cmp=$(diff --unchanged-line-format= --old-line-format= --new-line-format='%L' "$2" "$1" | wc -l)
if [ "$first_cmp" -eq "0" -o "$second_cmp" -eq "0" ]
then
echo "Subset"
exit 0
else
echo "Not subset"
exit 1
fi
Если Вы - подмножество другого возврат сценария 0
для True
иначе 1
.
%L
, это было три года назад. От man diff
(текущая версия) %L
означает "содержание строки".
– gc5
24.05.2017, 21:56
Если F1 представляет собой подмножество F2, то F1 - F2 - это пустой набор. Строительство на этом мы можем написать функцию IS_Subset и функцию, полученную из нее. В соответствии с установлена разница между 2 текстовыми файлами
sort_files () { f1_sorted="$1.sorted" f2_sorted="$2.sorted" if [ ! -f $f1_sorted ]; then cat $1 | sort | uniq > $f1_sorted fi if [ ! -f $f2_sorted ]; then cat $2 | sort | uniq > $f2_sorted fi } remove_sorted_files () { f1_sorted="$1.sorted" f2_sorted="$2.sorted" rm -f $f1_sorted rm -f $f2_sorted } set_union () { sort_files $1 $2 cat "$1.sorted" "$2.sorted" | sort | uniq remove_sorted_files $1 $2 } set_diff () { sort_files $1 $2 cat "$1.sorted" "$2.sorted" "$2.sorted" | sort | uniq -u remove_sorted_files $1 $2 } rset_diff () { sort_files $1 $2 cat "$1.sorted" "$2.sorted" "$1.sorted" | sort | uniq -u remove_sorted_files $1 $2 } is_subset () { sort_files $1 $2 output=$(set_diff $1 $2) remove_sorted_files $1 $2 if [ -z $output ]; then return 0 else return 1 fi }
in
оператор. – Timo 12.02.2014, 15:21