Bash coller de sortie de la commande mise en forme
Fichier1:
1
2
Fichier2:
1 2 3
4 5
Fichier3:
x x x
yy yy
zz
paste file1 file2 file2
me donne un onglet séparé de sortie:
1 1 2 3 x x x
2 4 5 yy yy
zz
paste -d" " file1 file2 file3
me donne de la sortie:
1 1 2 3 x x x
2 4 5 yy yy
zz
Je le veux comme ci-dessous:
1 1 2 3 x x x
2 4 5 yy yy
zz
Aucune idée si c'est possible ou dois-je essayer de toute autre commande?
Si la deuxième ligne de
Le but est d'utiliser l'espace comme séparateur et toujours conserver la mise en forme d'origine dans chaque fichier. Désolé, je n'ai pas votre question à propos de fichier2.
Donc a votre problème a été résolu? Il n'est pas clair à partir de vos commentaires.
file2
est 4 5 6 7 8
? Quelle est la sortie désirée, alors? L'objectif est ici d'avoir une colonne par fichier d'entrée?Le but est d'utiliser l'espace comme séparateur et toujours conserver la mise en forme d'origine dans chaque fichier. Désolé, je n'ai pas votre question à propos de fichier2.
Donc a votre problème a été résolu? Il n'est pas clair à partir de vos commentaires.
OriginalL'auteur Ramesh | 2014-10-20
Vous devez vous connecter pour publier un commentaire.
Pourrait utiliser sed après pour supprimer des onglets
Ici est d'un usage général script awk qui fonctionne sur n'importe quel numéro de fichier avec toute la mise en forme.
Non, l'utilisation de inutilisés délimiteurs permettrait de maintenir la forme de boîte horizontale de l'empilement.
Oui, c'est ce que je voulais. En fait, j'ai essayé de sed pour remplacer les tabulations par des espaces, mais il a utilisé un "g" drapeau à la fin, ce qui a foiré ma sortie. Je suis à l'aide de votre solution maintenant. Merci.
le sed de commande ne fonctionne que si la longueur de la première des deux fichiers " lignes d'ajouter jusqu'à 8, comme elle a toujours un onglet. L'awk solution est beaucoup plus durable. Si fedorquis réponse travaille pour différentes longueurs de lignes/fichiers, je vous suggère d'accepter ses.
Je ne pense pas que j'ai parfaitement compris ce que vous dites sur les onglets, mais, quand j'ai essayé d'ouvrir le fichier de sortie généré (ayant .extension csv) dans une application de feuille de calcul, j'ai eu à utiliser à la fois onglet et de l'espace en tant que séparateurs de champ; l'utilisation de l'espace comme un champ séparateur de ne pas mettre toutes les colonnes d'une bonne cellule, et je pense que c'est lié à ce que vous dites. Je vais essayer fedorqui de la solution avec les différents fichiers d'entrée, et l'utilisation de sa solution au lieu de cela, si ça marche bien pour tous les cas.
OriginalL'auteur
paste
deux fois, il est à moi:Il devrait être étudié, mais il est hors de la portée de la question. C'est bien que vous êtes couvert dans votre réponse, mais je ne vois pas la nécessité de généraliser toutes les réponses 😀
OriginalL'auteur fedorqui
Juste de vous quelques exemples, il semble que vous pourriez essayer d'abord de joindre des fichiers 1 et 2, puis en rejoignant que avec fichier 3, mais avec un séparateur spécial, qui vous changerais plus tard à un espace.
Non testé exemple:
Ici, j'ai utilisé
|
, mais vous devez utiliser quelque chose que vous savez pour sûr, n'apparaissent pas dans les données, c'est à dire quelque chose d'encore plus obscurs comme˘
. Un peu un hack, mais devrait fonctionner.Pour seulement deux fichiers:
Pas beaucoup d'un obstacle, tout simplement de générer la commande de prendre deux fichiers, puis une boucle sur tous les d'entre eux. Tout ce code et les données peuvent être contenus dans le même variable si vous en avez vraiment besoin. Mais cela est une autre question déjà.
Je l'ai essayé, mais j'ai un autre problème maintenant. Lorsque j'exécute la commande générée en utilisant la syntaxe ${pastecmd}, la commande coller pense que le | est un autre fichier d'entrée. J'ai essayé d'y échapper, mais pas de chance. Je préférerais pour explorer commande coller des drapeaux, et de voir ce qui pourrait être réalisable. Merci pour votre temps.
Essayez avec un autre délimiteur comme dans le deuxième exemple. Vous n'avez pas parlé d'économie code dans les variables en question, de sorte que | est un mauvais défaut. Pâte n'a pas d'autres drapeaux, malheureusement.
Ne pas stocker à une commande dans une variable. Utiliser un tableau. Voir mywiki.wooledge.org/BashFAQ/050 pour plus d'. Cela dit, vous toujours ne pouvez pas coller un tuyau dans il que qui ne fonctionne toujours pas.
OriginalL'auteur lynxlynxlynx
Est-ce le genre de chose que vous cherchez?
OriginalL'auteur Etan Reisner