commande coller: définition de (plusieurs) délimiteurs


9

Sous Linux, j'ai le problème suivant avec pastefrom (GNU coreutils) 8.13:

Si vous essayez de définir un autre délimiteur que celui par défaut (TAB), vous imprimez simplement le premier caractère du délimiteur défini ou vous l'ignorez parfaitement.

Question : Comment définit-on (plusieurs) délimiteurs lors de l'utilisation paste ?

Utiliser simplement, par exemple abc-123 comme délimiteur serait bien. Par "multiple", je veux dire par exemple 2 TABS au lieu d'un.


Les motifs entourant le ou les délimiteurs que j'ai essayés jusqu'à présent étaient

  • --delimiters="\delimiter"
  • --delimiters='\delimiter'
  • --delimiters=$"\delimiter"
  • --delimiters=$'\delimiter'

Tous avec le même résultat: Seul le premier caractère est accepté ou parfaitement ignoré. J'ai également essayé la version courte -d"\"et plusieurs instances & ndahs; rien.

Aussi:

  • --delimiters="\\" → Message d'erreur

Ce qui fonctionne parfaitement, mais pas ce que je veux:

  • --delimiters="\n" → nouvelle ligne
  • --delimiters="\0" → rien entre les deux
  • --delimiters="\t"TAB, la valeur par défaut. Génial.

Réponses:


17

Pour avoir abcentre le fichier1 et le fichier2, vous pouvez faire:

paste -d abc file1 /dev/null /dev/null file2

Ou:

paste -d abc file1 - - file2 < /dev/null

Si vous voulez deux onglets:

paste file1 /dev/null file2

" utiliser /dev/nullpour créer deux colonnes dans le traitement de texte " fonctionne (d'ailleurs: est-ce une connaissance commune que j'ai manquée jusqu'à présent et sinon: d'où avez-vous obtenu cette information?)
erch

1
@ Chirp.NotLuke. /dev/nullagit comme un fichier vide lors de la lecture, de sorte que vous collez file1, et le fichier vide, et le fichier vide, fichier2 avec des séparateurs étant, à son tour, a, bet c. Détails sur le -dfonctionnement de la pastepage de manuel.
Stéphane Chazelas

@ StéphaneChazelas pouvez-vous également ajouter pr -mts'abc' file1 file2comme alternative?
Sundeep

4

C'est parce que vous ne lui donnez que deux fichiers à joindre, chaque caractère de la chaîne de délimitation est utilisé entre chaque jointure de lignes de chacun des fichiers d'entrée.

par exemple

file1 line1 DELIMCHAR0 file2 line1 DELIMECHAR1 file3 line1 ...
file1 line2 DELIMCHAR0 file2 line2 DELIMECHAR1 file3 line2 ...
...

2

Sur les systèmes BSD (pas Linux à ma connaissance), il y a l' lamutilitaire (comme dans «laminate»), qui est plus rapide et plus court que la solution ci-dessus:

lam file1 -s delimiter file2
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.