2 fichiers cote à cote en shell

claudeJ -  
dubcek Messages postés 19021 Statut Contributeur -
Bonjour,
Bonjour je cherche a faire un script en shell qui affiche cote à cote le meme nombre de caracteres de 2 fichiers.

Exemple:

fichier a.txt
bonjour le site du chat

fichier b.txt
ce forum et vraiment pratique

résultat après passage a la moulinette par le script

bonjour le|ce forum e
site du c|t vraiment
hat | pratique


j'ai trouvé un sujet sur ccm ou on parle de la commande fold -w 10 fichier.txt permet d'afficher un certains nombre de caractère.
Je suppose donc qu'il faut couplé ca à une boucle if ou peut etre que sed/awk peut etre utilisé ?

merci
A voir également:

4 réponses

mamiemando Messages postés 34184 Statut Modérateur 7 888
 
En fait tout dépend de ce que tu veux faire. Si le but c'est de comparer les fichiers peut être que ce que tu cherches est un diff (c'est typiquement ce qu'on utilise pour comparer deux fichier). A noter l'excellent kompare pour comparer deux fichiers.
http://blog.thedebianuser.org/wp-content/uploads/2006/08/komparepackagelists.png

Si les deux fichiers n'ont rien à voir mais que le placement des caractères est important, je vois bien une solution via vim à coup de vertical split :
# Configuration data is parsed|# System-wide .bashrc file for
 as follows:                  | interactive bash(1) shells.
#  1. command line options    |
#  2. user-specific file      |# To enable the settings / com
#  3. system-wide file        |mands in this file for login s
# Any configuration value is o|hells as well,
nly changed the first time it |# this file has to be sourced
is set.                       |in /etc/profile.
# Thus, host-specific definiti|
ons should be at the beginning|# If not running interactively
 of the                       |, don't do anything
# configuration file, and defa|[ -z "$PS1" ] && return
ults at the end.              |
                              |# check the window size after
# Site-wide defaults for some |each command and, if necessary
commonly used options.  For a |,
comprehensive                 |# update the values of LINES a
# list of available options, t|nd COLUMNS.
heir meanings and defaults, pl|shopt -s checkwinsize
ease see the                  |
<h_config [RO] 16,1        14% <h.bashrc [RO] 1,1        Haut

Ici j'ai dans la colonne de gauche le fichier /etc/ssh/ssh_config et à droite le fichier /etc/bash.bashrc. J'ai obtenu ce résultat via un :
vim /etc/ssh/ssh_config

Une fois le fichier ouvert, pour ouvrir le second : echap :vs /etc/bash.bashrc. Il ne reste plus qu'à copier coller le tout à la souris (sélectionne le texte pour le copier, pour le coller utilise le clic du milieu/de la molette).

Petites précisions :
1) La disposition du texte dépend de la taille de la console.
2) Je pense qu'il est possible de déplacer la barre médiane mais je ne sais pas comment on fait. Le plus simple consiste à ouvrir vim dans un terminal, faire le vertical split, puis redimensionner la console si tu veux que les deux colonnes soient de tailles différentes.
3) Pour quitter : echap :q!
4) Tu peux déplacer le curseur avec les flèches et le changer de split avec un ctrl w w

Bonne chance
0
jipicy Messages postés 41342 Statut Modérateur 4 896
 
Salut,
[tmpfs]$ cat fich1
bonjour le site du chat

[tmpfs]$ cat fich2
ce forum et vraiment pratique

[tmpfs]$ fold -w 10 fich1 > tmp1

[tmpfs]$ fold -w 10 fich2 > tmp2

[tmpfs]$ paste -d "|" tmp*
bonjour le|ce forum e
 site du c|t vraiment
hat| pratique

[tmpfs]$
,-))
0
mamiemando Messages postés 34184 Statut Modérateur 7 888
 
Très instructif :-) Je ne connaissais pas paste.Et ça ressemble pas à une énorme bidouille scandaleuse comme j'ai proposé ;-)
0
jipicy Messages postés 41342 Statut Modérateur 4 896
 
;-))

C'est dingue le nombre de commandes inconnues (et au combien utiles au demeurant) dont regorgent les systèmes Unixes et dérivés ;-))
0
dubcek Messages postés 19021 Statut Contributeur 5 637
 
hello
ou avec pr
$ cat f1.txt
bonjour le site du chat
$ cat f2.txt
ce forum et vraiment pratique
$ fold -w 5 f1.txt > f11.txt
$ fold -w 5 f2.txt > f22.txt
$  pr -T -m -w12 -s'|'  f11.txt f22.txt
bonjo|ce fo
ur le|rum e
 site|t vra
 du c|iment
hat  | prat
     |ique
     |
0