J'essaie de trouver un moyen de déterminer si un fichier texte est un sous-ensemble d'un autre ..
Par exemple:
foo
bar
est un sous-ensemble de
foo
bar
pluto
Tandis que:
foo
pluto
et
foo
bar
ne sont pas un sous-ensemble les uns des autres ...
Existe-t-il un moyen de le faire avec une commande?
Ce chèque doit être un contre-chèque et il doit renvoyer:
file1 subset of file2 : True
file2 subset of file1 : True
otherwise : False
Réponses:
Si les contenus de fichiers sont appelés
file1
,file2
etfile3
dans l' ordre de apearance vous pouvez le faire avec la seule ligne suivante:la source
in
opérateur de Python .Avec
perl
:-0octal
définit le délimiteur d'enregistrement. Lorsque ce nombre octal est supérieur à 0377 (la valeur d'octet maximale), cela signifie qu'il n'y a pas de délimiteur, c'est équivalent à faire$/ = undef
. Dans ce cas,<>
renvoie le contenu complet d'un seul fichier, c'est le mode slurp .Une fois que nous avons le contenu des fichiers en deux
$h
et$n
variables, nous pouvons utiliserindex()
pour déterminer si l'un se trouve dans l'autre.Cela signifie cependant que tous les fichiers sont stockés en mémoire, ce qui signifie que cette méthode ne fonctionnera pas pour les fichiers très volumineux.
Pour les fichiers mmappables (inclut généralement les fichiers standard et les fichiers les plus recherchés comme les périphériques de bloc), cela peut être contourné en utilisant
mmap()
les fichiers, comme avec leSys::Mmap
module perl:la source
J'ai trouvé une solution grâce à cette question
Fondamentalement, je teste deux fichiers
a.txt
etb.txt
avec ce script:Si l'un est un sous-ensemble de l'autre, le script revient
0
pour leTrue
contraire1
.la source
%L
, c'était il y a trois ans. Deman diff
(version actuelle)%L
signifie "contenu de la ligne".Si f1 est un sous-ensemble de f2, alors f1 - f2 est un ensemble vide. En s'appuyant sur cela, nous pouvons écrire une fonction is_subset et une fonction qui en dérive. Selon la différence entre 2 fichiers texte
la source
#!/bin/bash
?Depuis http://www.catonmat.net/blog/set-operations-in-unix-shell/ :
la source