J’essaie d’utiliser couper et coller dans la même ligne de commande, mais cela ne fonctionne pas. J’ai deux fichiers, fileA et fileB.
fileA ab cd fileB 1 2 3 4 5 6 7 8
Je voudrais couper la deuxième et troisième colonne de fileB. Je le fais par la commande suivante.
cut -f 2-3 fileB
Ensuite, en face de cela, je voudrais coller des colonnes de fileA
paste fileA | cut -f 2-3 fileB > myNewFile
Donc, myNewFile ressemblera à
ab 2 3 cd 6 7
Je peux le faire en deux lignes.
cut -f 2-3 fileB > part1 paste fileA part1 > myNewFile
Mais au lieu de cela, je voudrais le faire en une fois. Quelque chose de similaire à
paste fileA | cut -f 2-3 fileB > myNewFile
ce qui ne fonctionne pas. Il imprime uniquement les commandes de coupe et ne fait rien à propos du collage. Comment puis-je faire cela en une seule commande?
Merci.
Solution 1:
paste fileA <(cut -f 2-3 fileB) > myNewFile
Solution 2:
paste fileA fileB | cut -f1-2,4-5
On dirait que vous voulez probablement les commandes de join
ou de paste
.
Un exemple d’utilisation de paste
pour joindre TOUTES les colonnes, puis quelques commandes de manipulation de colonnes pour filtrer les colonnes souhaitées, extraites de http://hintsforums.macworld.com/showthread.php?t=16618 sont présentés ci-dessous:
$ cat foo x1 y1 a1 b1 c1 d1 e1 f1 $ cat goo x2 y2 a2 b2 c2 d2 e2 f2 $ paste foo goo x1 y1 x2 y2 a1 b1 a2 b2 c1 d1 c2 d2 e1 f1 e2 f2 $ paste foo goo | column -t x1 y1 x2 y2 a1 b1 a2 b2 c1 d1 c2 d2 e1 f1 e2 f2 $ paste foo goo | column -t | colrm 9 12 x1 y1 y2 a1 b1 b2 c1 d1 d2 e1 f1 f2
essaye ça
paste fileA fileB | column -t | awk -F' ' '{print $1" "$2" "$4" "$5}'
ou ca
paste fileA fileB | column -s' ' -t | sed 's/ \+ /\t/g' | sed 's/\t/ /g' | cut -d' ' -f1-2,4-5