infile1: infile2: p> Comment puis-je rejoindre ces fichiers avec la commande UNIX de jointure pour obtenir cette sortie: 27 27
27 7
28 13
28 22
29 37
29 6
30 12
30 15
31 21
31 30
32 13
32 5
33 10
33 18
34 24
34 28
3 Réponses :
premier Trier code> les deux fichiers. Ensuite, utilisez
rejoindre code> pour rejoindre le premier champ des deux fichiers. Vous devez également piper la sortie via
sed code> si vous souhaitez supprimer l'espace et convertir ainsi
a aa code> dans
aa code>. Ceci est indiqué ci-dessous:
$ join -t " " -1 1 -2 1 -a 1 -a 2 <(sort file1) <(sort file2) | sed 's/ \([a-z]\) / \1/g'
1 aa
2 b
3 c
4 d
5 e
6 ff
7 g
8 h
fonctionne pour moi (presque). Vous devez spécifier -t $ '\ t' code> pour le caractère de tabulation, pas seulement
-t \ t code>. BASH n'interpré pas
\ t code> sauf si dans
$ '' '' '' '' '' '' code> citations.
join -t $'\t' -o 1.2,2.2 <(echo $'27\t27
28\t22
29\t37
30\t15
31\t21
32\t13
33\t18
34\t24' | sort) <(echo $'27\t7
28\t13
29\t6
30\t12
31\t30
32\t5
33\t10
34\t28' | sort)
27 7
22 13
37 6
15 12
21 30
13 5
18 10
24 28
Ceci devrait fonctionner pour vos deux cas:
27 277 28 2213 29 376 30 1512 31 2130 32 135 33 1810 34 2428
Bien fait. Aimé l'utilisation de opérateur ternaire code> au lieu de
if-ele code> +1 :)