Comment utiliser le copier-coller en une seule fois

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