J'ai cette chaîne de commande qui a parfaitement fonctionné sous OS X 10.6.8 (Snow Leopard) (qui me dit que son grep est grep (GNU grep) 2.5.1) ...Modèle de recherche de tuyaux à BSD grep
$ grep -hi 'TERM' file1.txt | cut -d '|' -f 3 | grep -f - file2.txt
(Trouver toutes les lignes avec TERM en eux fichier1, couper chaque vers le numéro d'identification unique dans le champ 3, puis regardant ces ID dans fichier2)
Et pourtant ce ne parvient dans OS X 10.11.5 (El Capitan) (qui me dit que son grep est grep (grep BSD) 2.5.1-FreeBSD) ...
grep: -: No such file or directory
Je ne veux vraiment pas installer GNU grep sur cette machine. Existe-t-il un moyen de corriger la deuxième commande grep pour que BSD grep fonctionne? Ou une meilleure façon de s'y prendre généralement?
Quelques exemples de code:
file1.txt ressemblerait à ceci:
Jones Inc||000123||foo||bar
TerminatorLLC||000124||foo||bar
Conan LP||000125||foo||bar
Termites-R-Us||000126||foo||bar
file2.txt comme:
000123||210 Main Street||moo||car
000124||Los Angeles||moo||car
000125||Mythical Kingdom||moo||car
000126||Your Woodwork||moo||car
Merci pour ce motif grep. Cela fonctionne avec GNU ou BSD grep. Les deux fichiers ont environ 750k lignes. GNU grep terminé en 33 secondes; BSD grep a fonctionné pendant 4 minutes et ne m'a toujours pas montré le premier résultat. Si rien d'autre, votre code si bien fourni m'a convaincu que BSD grep est de la merde. –
L'awk de @ andlrc semble fonctionner mais celui de @fedorqui ne semble pas fonctionner. –
@fedorqui J'apprécie le temps que vous avez passé là-dessus. Mais même après avoir revérifié que file2 précède le fichier 1 ... cela ne semble pas fonctionner. –